0
我想使用PHPExcel库将CSV文件转换为XLSX文件。一旦将csv文件读入PHPExcel对象并将其保存为xlsx文件之前,我将根据相关列内容重新计算并设置列宽。PHPExcel防止计算公式
$objReader = PHPExcel_IOFactory::createReader('CSV');
$objPHPExcel = $objReader->load("test.csv");
$activesheet = $objPHPExcel->getActiveSheet();
$lastColumn = $activesheet->getHighestColumn(); // get last column with data
$lastColumn++;
for ($column = 'A'; $column != $lastColumn; $column++) { // for each column until last
$activesheet->getColumnDimension($column)->setAutoSize(true); // set autowidth
}
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007');
$objWriter->save("downloads/test.xls");
与研究,我发现,如果有该文件中的任何公式,调用setAutoSize(位)计算为他们计算列的宽度时,可利用的价值。 我的问题是,我的一些csv文件包含以=(等号)开头的值,这些值不是公式。为前。像'===='这样的单元格值。这会导致以上代码引发错误PHPExcel_Calculation_Exception Formula Error: An unexpected error occured
。
因为我知道我的任何输入csv文件不能包含公式,有没有办法阻止PHPExcel计算包含以符号开头的值的单元格值?
在输入值之前将单元格设置为文本(或者在设置后重新输入)或在其前面添加一个'''=>运行其他代码...并且是的,这很烦人:/ –
As @DirkReichel says ;你可以通过使用自定义绑定来简化这个自定义绑定,该绑定会覆盖用'='将这些单元格转换为公式的逻辑 –