gpt4 book ai didi

PHPExcel 无法打开保存的文件

转载 作者:可可西里 更新时间:2023-10-31 23:47:21 26 4
gpt4 key购买 nike

我正在尝试打开一个现有的 excel 文件,修改一些单元格并保存它。我使用的是 Excel2007 读写器。

输入文件大约有 1 MB 大,它有很少的公式、 protected 数据和隐藏的行和列以及我没有修改的工作表。

我能够加载数据并向其中读取和写入一些值,我使用代码中的各种 var_dumps 检查这些值。

问题是在保存的时候。它会在超时时抛出一些 fatal error ,而且如果它写入文件,文件大小会膨胀到 9.2 MB,如果我可以打开它就可以了。

代码片段 - 没什么特别的。

$objReader = PHPExcel_IOFactory::createReader('Excel2007');
$objPHPExcel = $objReader->load($inputFile);

$objPHPExcel->setActiveSheetIndex(2);
$activeSheet = $objPHPExcel->getActiveSheet();

$currCell = $activeSheet->getCell("O3");
$cellValidation = $currCell->getDataValidation("O3");
$values = array();
if ($cellValidation->getShowDropDown() == true)
{
$values = $cellValidation->getFormula1();
$valArray = explode(",", $values);
$currCell->setValue($valArray[0]);
}

$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter -> setPreCalculateFormulas(false);
$objWriter->save($outputFile);

我使用 MS Excel 2010 打开生成的文件,但它花了很长时间,甚至一次都没有打开过。

请指点我应该查看的位置,帮助我解决此问题。

非常感谢任何帮助。

最佳答案

不是将其保存到文件,而是将其保存到 php://output­Docs :

$objWriter->save('php://output');

这会将它按原样发送到浏览器。

您想添加一些 headers­Docs首先,就像文件下载一样,浏览器知道文件的类型以及文件的命名方式(文件名):

// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');

// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xls"');

// Write file to the browser
$objWriter->save('php://output');

先做标题,再保存。对于 excel 标题,请参阅以下问题:Setting mime type for excel document .

所以最终代码将包含以下几行 -

// Save Excel 2007 file
#echo date('H:i:s') . " Write to Excel2007 format\n";
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
ob_end_clean();
// We'll be outputting an excel file
header('Content-type: application/vnd.ms-excel');
// It will be called file.xls
header('Content-Disposition: attachment; filename="file.xlsx"');
$objWriter->save('php://output');

我认为这一行:

ob_end_clean();

应该可以解决您的问题。

谢谢!

关于PHPExcel 无法打开保存的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29853589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com