代码之家  ›  专栏  ›  技术社区  ›  KB22

phpexcel-从代码编辑时格式会丢失

  •  4
  • KB22  · 技术社区  · 15 年前

    最近我在玩一个PHP-MS Excel集成。我的任务 是打开现有的电子表格,添加一些数据并保存填充的 电子表格作为新文件。基本上是一种模板填充引擎, eventhugh xlsx文件用作模板。

    我看了看 PHPExcel 这似乎是一个相当不错的框架。整齐 为了实现概念验证,我做了以下工作(减少到最低限度 需要说明我需要做什么):

    $objReader = PHPExcel_IOFactory::createReader('Excel2007');
    $objReader->setReadDataOnly(true);  
    $objPHPExcel = $objReader->load("myTemplateToFill.xlsx");
    
        //Here comes the actual filling
    $objWorksheet = $objPHPExcel->createSheet();
    $objWorksheet->setTitle('Apple')    ;
    $objWorksheet->setCellValue('A1', 'Banana');    
    $objPHPExcel->setActiveSheetIndex(0);
    
    $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
    $objWriter->save('myFilledTemplate.xlsx');
    

    运行这个,我发现一个新的文件被创建,我的DAAT被插入,但遗憾的是 所有现有格式都将丢失。

    所以问题是,有没有办法让phpexcel保持这些格式在新的 文件?或者更进一步:是否可以将图表等保存在模板文件中? 用我试过的方法填满那些?

    提前感谢您分享的所有经验!

    K

    2 回复  |  直到 9 年前
        1
  •  3
  •   opHASnoNAME    15 年前

    嗯,你正在创建一个新的工作表,它没有默认格式。我认为您必须将值添加到现有工作表中?

    $objPHPExcel->setActiveSheetIndex(0); // index of sheet
    $workSheet = $objPHPExcel->getActiveSheet();
    $workSheet->setTitle('Pflaume');
    
        2
  •  7
  •   Mark Baker    14 年前

    由于此行格式丢失 $objreader->setreaddataonly(真); 告诉读者阅读 只有 模板工作簿中的数据,而不是格式。

    您还需要修改现有工作表中的数据。创建新工作表将创建未格式化的工作表。或者,可以使用phpexcel_worksheet copy()方法