Php 更新.xlsx文件
我正在使用PHPExcel_1.8.0。 我有许多输入文件,我想读取每个文件,并将它们运行时保存到单个输出文件中。 我已经尝试过了,但是每个文件的输出文件都被覆盖。 让我简单解释一下: 我有5个文件,其中有5个不同员工的记录,我想通过php将这些记录放在一个文件中。我已经设置了一个循环,所以输出文件只保存了最后一条员工记录,因为被覆盖了。 我想在php中添加类似append的内容。 这是我的代码:Php 更新.xlsx文件,php,phpexcel,Php,Phpexcel,我正在使用PHPExcel_1.8.0。 我有许多输入文件,我想读取每个文件,并将它们运行时保存到单个输出文件中。 我已经尝试过了,但是每个文件的输出文件都被覆盖。 让我简单解释一下: 我有5个文件,其中有5个不同员工的记录,我想通过php将这些记录放在一个文件中。我已经设置了一个循环,所以输出文件只保存了最后一条员工记录,因为被覆盖了。 我想在php中添加类似append的内容。 这是我的代码: <?php error_reporting(E_ALL); ini_set('dis
<?php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
define('EOL', (PHP_SAPI == 'cli') ? PHP_EOL : '<br />');
date_default_timezone_set('Europe/London');
require_once 'index.php';
require_once dirname(__FILE__) . '/Classes/PHPExcel.php';
$dirlist = dirToArray('input');
foreach ($dirlist AS $value) {
$info = new SplFileInfo($value);
$vFileExtension = $info->getExtension();
if ($vFileExtension == 'xlsx' || $vFileExtension == 'xls') {
$inputFileName = "input/".$value;
$objReader = new PHPExcel_Reader_Excel5();
$objPHPExcel = $objReader->load($inputFileName);
$sheetData = $objPHPExcel->getActiveSheet()->toArray(null, true, true, true);
$objPHPExcel = new PHPExcel();
$i = 1;
foreach ($sheetData AS $key => $row) {
foreach ($row AS $index => $rec) {
$objPHPExcel->getActiveSheet()->setCellValue($index . $i, $newtext);
}
$i++;
}
$objDrawing = new PHPExcel_Worksheet_HeaderFooterDrawing();
$objDrawing->setName('PHPExcel logo');
$objDrawing->setPath('./images/phpexcel_logo.gif');
$objDrawing->setHeight(36);
$objPHPExcel->getActiveSheet()->getHeaderFooter()->addImage($objDrawing, PHPExcel_Worksheet_HeaderFooter::IMAGE_HEADER_LEFT);
$objPHPExcel->getActiveSheet()->getPageSetup()->setOrientation(PHPExcel_Worksheet_PageSetup::ORIENTATION_LANDSCAPE);
$objPHPExcel->getActiveSheet()->getPageSetup()->setPaperSize(PHPExcel_Worksheet_PageSetup::PAPERSIZE_A4);
$objPHPExcel->getActiveSheet()->setTitle('Data');
$objPHPExcel->setActiveSheetIndex(0);
$callStartTime = microtime(true);
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("output/result.xlsx");
$callEndTime = microtime(true);
$callTime = $callEndTime - $callStartTime;
$callStartTime = microtime(true);
echo $value . ' has been generated!' . EOL;
}
}
?>
问题#1。停止依赖扩展,让PHPExcel的IOFactory load()方法识别上传文件的实际格式问题#2。不使用PHPExcel_Reader_Excel5()如果该文件确实是OfficeOpenXML格式的.xlsx文件,则使用PHPExcel_Reader_Excel2007()-IOFactory load()将为您解决此问题#3。如果要将所有5个对象合并到一个新的电子表格文件中,请在循环之前实例化新的PHPExcel对象,并在循环之后保存它谢谢您的合作#1我只有.xlsx文件#2我已经将该文件包含在iFactory中,但它不起作用#3我现在尝试了最后一个文件,但不幸的是,这个文件也不起作用#1-如果你只有.xlsx
文件,为什么还要允许.xls
呢。。。。让PHPExcel识别文件本身更安全。。。如果您的文件是正版.xlsx
文件,则PHPExcel\u Reader\u Excel5
读取器应引发异常。。。。使用IOFactory::load()
可以消除这种情况,因为PHPExcel将通过测试文件而不是假设来选择正确的读取器