b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

php中通用的excel导出方法的相关资料,通过文中介绍的方法

电脑杂谈  发布时间:2021-03-17 09:07:48  来源:网络整理

本文主要向您介绍有关php中一般excel导出方法的相关信息。本文介绍的方法对每个人学习或使用php都有一定的参考学习价值。需要它的朋友将跟随我们一起学习。

一.常规导出方法

有很多方法可以在Internet上导出excel。在crm或oa系统中导出excel是很常见的。每个完成此功能的人都知道,主要操作实际上是循环数据列表,然后将其放置在网格中。将数据添加到固定的单元格。只需执行一次,然后复制相关代码进行修改和修改,即可完成其他位置的导出功能。

但这有两个问题:

1.修改列表数据字段时,需要修改很多代码,难以维护且难以更改;

2.多次出现导出功能时,需要在多个位置复制很多冗余代码,这看起来很不舒服;

php页面导出excel_php导出mysql数据到excel文件格式_php导出excel图片格式

因此,有必要统一导出excel的方法。使用它时,只需传入数据的标题,标题字段名称,数据列表和数据表名称即可导出excel。

二.使用常见的导出方法

如下图所示,只要传入4个参数,就可以完成导出,并且使用和维护变得更加简单。

php导出excel图片格式

好的,目标很明确,下一步是代码实现。

显然,要实现此功能,最大的困难是根据单个数据的索引和标头字段的顺序(例如A1, B 3)。

php导出mysql数据到excel文件格式_php导出excel图片格式_php页面导出excel

然后让我们分析excel的单元格坐标。从A1开始,数字的值在垂直方向上增加,而字母在水平方向上增加。当水平字母变为Z时,下一个字母为AA,然后是AB,...,ZZ,...,AAA ...

在这种情况下,我们将知道垂直坐标很简单,并且可以根据每条数据的索引值进行计算。困难的是水平坐标。怎么计算呢?在仔细分析水平坐标后,可以发现它是一个类似于26个基数的字母数字。如果将A视为0,则Z表示25。但是此数字与我们常见的十六进制,八进制等不同,因为携带Z时,下一个数字不是BA而是AA。在常见的基数中(例如十进制的9进位),它变为10而不是00;否则,它变为10。十六进制的0xF进位变为0x10,而不是0x00。

因此,您可以参考十六进制转换算法,然后对其进行更改以获取计算excel(十进制到伪26十六进制)水平坐标的方法:

//AAA转换
public static function toAAA($dec)
{
 if ($dec < 0) return '';
 $y = $dec % 26;
 $x = floor($dec / 26);
 return self::toAAA($x - 1) . chr($y + 65);
}

最后,附上完整的代码

该框架为Yii2,而excel导出组件为moonlandsoft / yii2-phpexcel;

其他类似

//导出xls
public static function exportXls($array)
{
 set_time_limit(0);
 include(Url::to('@vendor/moonland/phpexcel/PHPExcel.php'));
 include(Url::to('@vendor/moonland/phpexcel/PHPExcel/Writer/Excel2007.php'));
 $titles = $array['titles'];
 $fields = $array['fields'];
 $list = $array['list'];
 $name = $array['name'];
 $count = count($titles);
 $keys = [];//A=>chr(65)
 foreach ($titles as $k => $v) {
 $keys[] = self::toAAA($k);
 }
 $objPHPExcel = new \PHPExcel();
 $objWriter = new \PHPExcel_Writer_Excel2007($objPHPExcel);
 $objPHPExcel->setActiveSheetIndex(0);
 $activeSheet = $objPHPExcel->getActiveSheet();
 $activeSheet->setTitle($name);
 $activeSheet->getStyle("A1:{$keys[$count-1]}1")->getAlignment()->setHorizontal(\PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
 $activeSheet->mergeCells("A1:{$keys[$count-1]}1");
 $activeSheet->setCellValue('A1', $name);
 //设置title,样式
 foreach ($titles as $key => $title) {
 $activeSheet->setCellValue($keys[$key] . '2', $title);
 $activeSheet->getColumnDimension($keys[$key])->setWidth(20);
 $activeSheet->getRowDimension(($key + 1))->setRowHeight(18);
 }
 $i = 3;
 foreach ($list as &$item) {
 foreach ($keys as $k => $v) {
  $val = isset($item[$fields[$k]]) ? $item[$fields[$k]] . ' ' : ' ';
  $activeSheet->setCellValue($v . $i, $val);
 }
 $i++;
 }
 $fileName = $name . "_" . date('Y_m_d_His') . '.xlsx';
 header("Cache-Control: public");
 header("Pragma: public");
 header("Content-type:application/vnd.ms-excel");
 header("Content-Disposition:attachment;filename=" . iconv("utf-8", "GB2312//TRANSLIT", $fileName));
 header('Content-Type:APPLICATION/OCTET-STREAM');
 ob_clean();
 ob_start();
 $objWriter->save('php://output');
 ob_end_flush();
}
//AAA转换
public static function toAAA($dec)
{
 if ($dec < 0) return '';
 $y = $dec % 26;
 $x = floor($dec / 26);
 return self::toAAA($x - 1) . chr($y + 65);
}

三.导出结果示例

导出结果:

php导出excel图片格式

摘要

以上是本文的全部内容。希望本文的内容对每个人的学习或工作都有一定的参考学习价值。如有任何疑问,您可以留言和交流。感谢您对Scripthome的支持。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-365700-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...