PHP-phpexcel写入excel时工作表循环问题
先看代码
// 创建一个处理对象实例
$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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
// 生成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表,而不是创建文件。循环位置写错。
我想是因为你的PHPExcel对象内的状态没有被清空,而你使用它来创建下一个文件,所以上一个文件的工作区数也被复制了。
你应该每次创建文件时都重新创建PHPExcel对象。