解决这个问题花了将近6个小时,看了很多篇博客,方法都不管用。
都快要把自己搞崩溃了,这么个问题花了这么长时间,怪自己太弱。不过,最后奇迹出现了。
很感谢这个微信公众号:猿哥 点击打开链接(有幸看到这篇推文,解决了我的问题)。
下面给出我的案例,可供大家参考。
1.使用轻量级的excel操作库PHP_XLSXWriter,下载源码包。这里我用了猿哥发布的包。
点击打开链接
2.将上面链接中的PHPXLSXWriter包放到项目目录下。
3.链接数据库页面(database.php)
<?php
$Server="localhost";
$User="root";
$pw="****";//密码
$db="****";//数据库名
$con=mysqli_connect($Server,$User,$pw,$db);
// 检查连接
if (!$con)
{
die("连接错误: " . mysqli_connect_error());
}
else
echo "数据库连接成功"."<br>";
//设置客户端和连接字符集
mysqli_set_charset($con,"utf8");
?>
4.处理表格生成excel的页面(deal.php)
1)数据库中表的结构
2)代码:
<?php
include("database.php");
#使用轻量级的excel操作库PHP_XLSXWriter
$timeStart = microtime(true);
include("./PHP_XLSXWriter/vendor/autoload.php");
$writer = new XLSXWriter();
$sheetHeader = [
'公司名称'=>'string',
'销售员'=>'string',
'所属部门'=>'string',
'单位审核时间'=>'string',
'最后联系时间'=>'string',
'间隔'=>'string',
'达标'=>'string'
];//表头
$writer->writeSheetHeader('Sheet1', $sheetHeader);//optional
$sql="SELECT * FROM 表名";
$result=mysqli_query($con,$sql);
while($row =mysqli_fetch_array($result))//选择你需要的字段并写入excel
{
$s1=$row['company_name'];
$s2=$row['saler'];
$s3=$row['sector'];
$s4=$row['audit_time'];
$s5=$row['last_time'];
$s6=$row['time_interval'];
$s7=$row['standard'];
echo $s1." ".$s2." ".$s3." ".$s4." ".$s5." ".$s6." ".$s7."<br>";
$writer->writeSheetRow('Sheet1', array($s1, $s2, $s3, $s4, $s5, $s6, $s7));
}
$writer->writeToFile('D:tmp\goods.xlsx');//路径名
echo floor((memory_get_peak_usage())/1024/1024)."MB";
echo "\n";
echo microtime(true) -$timeStart;
?>
亲测有效,成功写入excel文件!!!!再次感谢微信公众号:猿哥