开源项目:github.com/mini-software/MiniExcel
先说个前提。
这篇文章对经常开发Excel相关功能的人会更有共鸣,但普通用户看完也能明白其中的门道。
很多网站、APP、ERP、MES系统都会涉及Excel导入导出。

用户上传表格,系统读取数据;或者系统生成报表,再导出Excel给用户。
传统方案为了方便操作数据,往往会先把整个Excel文件全部加载到内存里。
数据量小时没什么感觉。当文件变成几十万行、上百万行时,内存占用就开始失控。

有些项目导入一个大表格,内存直接冲到1GB以上。服务器配置稍微低一点,就容易出现「OOM」(内存溢出)。
而MiniExcel,可以完美解决内存焦虑问题。
为什么它能省下这么多内存?MiniExcel是一个开源的.NET Excel处理组件。

整个DLL不到150KB,却拥有读取、写入、导出、模板填充等常见能力。
它最吸引人的地方,是采用流式读取的方式。
简单理解,就是读到一行处理一行,而不是先把整个文件全部搬进内存。
这样做带来的直接结果就是内存占用大幅下降。
官方资料显示,一些原本需要占用1000多MB内存的场景,可以压缩到几MB级别。

对于服务器来说,很多导入任务能够稳定运行,频繁GC的问题也会减少。
对于开发者来说,使用门槛也不高。
比如读取Excel数据,只需要一行代码调用Query方法;导出数据,同样通过SaveAs方法即可完成。
这也是为什么不少.NET开发者把它当成Excel处理工具箱中的常备组件。

看到这里,有人可能会说:
我又不是程序员,知道这些有什么用?也是,因为真正困扰普通用户的,是另一类问题,比如版本控制、权限、代码等。

这种情况,中文表格无代码开发工具早已突破。其中比较典型的,就是Eversheet。
它最初就是为了满足中大型制造型企业等业务复杂企业的数字化需求而设计。
第一次接触时会发现,它的操作习惯和Excel非常接近。表格设计、数据录入、流程审批、权限控制都可以在同一个平台完成。

最关键的是不需要写代码。懂业务的人自己就能参与系统建设。
过去需要程序员开发的很多功能,现在业务部门也能自己完成。
对于大型企业来说,更大的价值在于数据能力。当数据达到几十万、上百万条时,依然能够保持较快的响应速度。

而且数据集中管理,不再依赖一个个散落在电脑里的Excel文件。从某种意义上说,MiniExcel是在帮开发者解决Excel处理效率问题。
而eversheet则是在帮助企业逐步摆脱对微软Excel和VBA的依赖。
两者解决的是不同阶段的问题。

很多技术问题看起来复杂,追到最后,往往只是工具没有选对。因为技术的发展从来都没有消灭问题,它只是不断提供新的解决方案。所以,不必焦虑,而是找出对应的解决方法。
最后,你有什么补充或修正的地方?
文 | eamon
#软件#