PHP-phpexcel写入excel时工作表循环问题

发布于 2016-12-14 01:25:38 字数 1669 浏览 1271 评论 2

先看代码

// 创建一个处理对象实例   
$objExcel = new PHPExcel();

// 创建文件格式写入对象实例, uncomment
$objWriter = new PHPExcel_Writer_Excel5($objExcel); // 用于其他版本格式
//设置文档基本属性
$objProps = $objExcel->getProperties();
$objProps->setCreator("Zeal Li");
$objProps->setLastModifiedBy("Zeal Li");
$objProps->setTitle("Office XLS Test Document");
$objProps->setSubject("Office XLS Test Document, Demo");
$objProps->setDescription("Test document, generated by PHPExcel.");
$objProps->setKeywords("office excel PHPExcel");
$objProps->setCategory("Test");

// 生成excel文件
for ($e=0;$e<10;$e++) {
// 每个文件生成5个工作表
for ($s=0;$s<5;$s++) {
$GSheet = $s+1;
if ($s==0) {
$objExcel->setActiveSheetIndex($s);
$objActSheet = $objExcel->getActiveSheet();
$objActSheet->setTitle('短信'.$GSheet);
}else{
// //添加一个新的worksheet
$objExcel->createSheet();
$objActSheet = $objExcel->getSheet($s);
$objActSheet->setTitle('短信'.$GSheet);

}
// 设置 工作 表格式 ,
unset($objActSheet);

}
$outputFileName = uniqid().'_'.($e+1).'.xls';
$objWriter->save($outputFileName);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

偏爱自由 2017-09-18 15:56:28

// 生成excel文件
for ($e=0;$e<10;$e++) {
// 每个文件生成5个工作表
for ($s=0;$s<5;$s++) {
$GSheet = $s+1;
if ($s==0) {
$objExcel->setActiveSheetIndex($s);
$objActSheet = $objExcel->getActiveSheet();
$objActSheet->setTitle('短信'.$GSheet);
}else{
// //添加一个新的worksheet
$objExcel->createSheet();
$objActSheet = $objExcel->getSheet($s);
$objActSheet->setTitle('短信'.$GSheet);

}
// 设置 工作 表格式 ,
unset($objActSheet);

你这里都是循环创建Sheet表,而不是创建文件。循环位置写错。

夜无邪 2016-12-14 18:50:40

我想是因为你的PHPExcel对象内的状态没有被清空,而你使用它来创建下一个文件,所以上一个文件的工作区数也被复制了。

你应该每次创建文件时都重新创建PHPExcel对象。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文