dream518518518 2015-05-31 08:06
浏览 39

仅保存PHPExcel中的更改

I am using PHPExcel for editing a large XLSX file (~230kb, 20 sheets). They way I do it yet is:

  1. load the file (create the PHPExcel object)
  2. do the changes on the PHPExcel object
  3. overwrite the XLSX file with a new one

This is very slow (~6 seconds), although there are only small changes (some cells in just one worksheet).

Is there a way to save just the changes in the file? Or if not, with another library?

  • 写回答

1条回答 默认 最新

  • douyinjiao9351 2015-06-01 15:05
    关注

    You can try to do it with Spout: https://github.com/box/spout. It should not take more than a second and your code should look like this:

    $reader = ReaderFactory::create(Type::XLSX);
    $reader->open('path/to/file/to/read.xlsx');
    
    $writer = WriterFactory::create(Type::XLSX);
    $writer->openToFile('path/to/file/to/write.xlsx'); // needs to be different than the one read for now
    
    while ($reader->hasNextSheet()) {
        $reader->nextSheet();
    
        while ($reader->hasNextRow()) {
            $row = $reader->nextRow();
            // change the row here if needed
            $writer->addRow($row);
        }
    }
    
    $reader->close();
    $writer->close();
    
    // And at the end, you can replace the old file with the new one:
    rename('path/to/file/to/read.xlsx', 'path/to/file/to/write.xlsx');
    

    Hope that helps!

    评论

报告相同问题?

悬赏问题

  • ¥15 微信小程序协议怎么写
  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看