如何编写excel文件更快(writetable、writecell writematrix或其他)
177(30天)
显示旧的评论
我多年来经历了很多话题,这是我最近发现:
- writetable & co比旧的快xlswrite(或替代我发现在matlab中央)
- writetable & co仍超慢当写入excel。不是难以承受的水平,但如果数据规模足够大,你必须写几十或几百个文件(1 - 100 MB),你可以花几分钟甚至几小时等待。
一些小技巧我发现加快写作速度约4或5 x是:
- “AutoFitWidth”= false……这是真的在默认情况下,禁用它好几次让我实现更快的写入速度(当UseExcel = false,否则更)
- “UseExcel”= true……默认这是错误的,我认为这是一件好事,避免开放一个Excel好几次但是你可以挤另一个实例通过切换为true
奇怪的交互是“AutoFitWidth”= true尤其是惩罚当UseExcel = false,这就是默认的组合。当“UseExcel”是正确的,至少在我的例子中,我可以得到完整的4-5x增加甚至离开AutoFitWidth启用。
现在,因为即使这个技巧写速度仍然很低,我在想,有一个较低的水平的方式写excel输出?使用流和不知何故还保存到excel文件吗?我知道这是一个坏习惯保存到Excel但它仍然方便当你不得不为客户出口数据,等。分享一个Excel文件,而不是. txt或其他通常通常是一大亮点,为客户处理这方面会很高兴有一个更快的方式以编程方式编写matlab计算东西到Excel文件。
答案(2)
1月
2021年5月30日
谢谢你分享这个有用的信息。
我理解正确你建议:
writetabele(数据、“UseExcel”,真的,“AutoFitWidth”假)
在R2018b AutoFitWidth并不存在,所以它是新的。一些时间在我的Windows机器:
x =表(rand (1000、100));
抽搐;writetable (x,“test1.xlsx”,“UseExcel”,真正的);toc
%运行时间是1.795150秒。%第一个电话
抽搐;writetable (x,“test2.xlsx”,“UseExcel”,真正的);toc
%运行时间是0.667419秒。%的第二个电话
抽搐;writetable (x,“test3.xlsx”,“UseExcel”、假);toc
%运行时间是1.489082秒。%同时重复调用
抽搐;保存(“test4.mat”,“x”);toc
%运行时间是0.027679秒。
Excel文件格式xls和.xlsx不是有效的读和写访问。有许多二进制格式,这比Excel类型。
我个人讨厌Excel文件格式是原因之一。
你能请一些包括计时吗
“AutoFitWidth”,假的
吗?