PHPExcel - PHPExcel不支持擦除公式

时间:2016-04-27 02:06:14

标签: php excel phpexcel

我在服务器中保存了一个excel模板。当我使用PHPExcel库将一些数据写入现有模板并保存时,它会写入数据,但会在保存时删除excel文件中的所有公式,如linest等。因此,当我打开excel文件时,它会显示写入它的数据,但该文件不包含任何公式。这是我做错了还是PHPExcel不支持这些功能?我尝试在stackoverflow上查看其他问题,但找不到类似于我的任何内容。 下面是我写入excel文件的代码。

<?php 
/** Include PHPExcel */
require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
$sheetname = "Input";

$inputFileName = "templates/test_template2.xlsx";
$inputFileType = "Excel2007";
class MyReadFilter implements PHPExcel_Reader_IReadFilter {
    public function readCell($column, $row, $worksheetName = '') {
    //  Read rows 1 to 200 and columns A to PP only for avoiding memory limit errors 
        if ($row >= 1 && $row <= 200) {
           if (in_array($column,range('A','PP'))) { 
           return true;
           }
       } 
       return false;
   }
}

$filterSubset = new MyReadFilter();

$objReader = PHPExcel_IOFactory::createReader($inputFileType);
$objReader->setIncludeCharts(true);
$objReader->setLoadSheetsOnly($sheetname); 
$objReader->setReadFilter($filterSubset); 
$objPHPExcel = $objReader->load($inputFileName);

$objPHPExcel->setActiveSheetIndex(0);
//random data for testing
$objPHPExcel->getActiveSheet()->SetCellValue('B15', '234');
$objPHPExcel->getActiveSheet()->SetCellValue('C15', '2554');
$objPHPExcel->getActiveSheet()->SetCellValue('D15', '436');
$objPHPExcel->getActiveSheet()->SetCellValue('B16', '246546');
$objPHPExcel->getActiveSheet()->SetCellValue('C16', '576');
$objPHPExcel->getActiveSheet()->SetCellValue('D16', '457'); 
$objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
$objWriter->setPreCalculateFormulas(true); 
$objWriter->setIncludeCharts(true);
$objWriter->save('test_template_edit.xlsx');
echo "Data written and saved to the excel file";
?>

编辑:     因此,在更改内存和时间限制并上传具有较少列的文件后,我能够保留格式和公式。但是,稍后查看工作簿时,即使我在上载和输出文件之前使用setIncludeCharts(TRUE),相邻工作表上的所有图表也会消失。有什么建议吗?

0 个答案:

没有答案