【发布时间】:2012-08-20 17:16:10
【问题描述】:
我正在开发一个内部系统,旨在与 Google Docs 非常相似。我正在实施的主要部分模仿了他们基于 Web 的电子表格实施。由于多种原因,我无法使用具有非常强大的电子表格 API 的 Google Docs 或 ZK。我选择 POI 3.7 作为我的 Excel 电子表格处理的起点。
目前,当用户上传 Excel 电子表格时,我会获取文件 byte[] 并将其作为 blob 存储在我们的数据库中。当用户想要查看电子表格时,我取出 byte[],构建工作簿,然后将其推送到客户端 UI 进行编辑。推送到 UI 不是我关心的问题。当用户对电子表格进行编辑时,我将编辑推送到服务器并将它们存储在堆栈中,并且仅在用户按下“保存”按钮时应用更新。保存时,我将工作簿从数据库中拉出,进行更改并将工作簿推回数据库。这样一来,我就不会记住它了。毫无疑问,所有这一切都非常快,除了当多个用户开始这样做时,显然爆炸的工作簿会消耗内存,如此处其他帖子中所述。
用户一次只会更新一个标签,为什么我需要打开整个工作簿?当用户最初上传一个 excel 电子表格时,我可以拉出每个工作表,将每个工作表转换为一个字节 [] 并将每个工作表保存为一个单独的“工作表”数据库记录吗? POI 表有一个受保护的“#write(Stream)”方法,但我不想涉足重新编译 POI 的业务。我也不想将每个单元格作为新的数据库条目爆炸。你们一开始会采取不同的做法吗?
后端是 java/spring/jdbc。出于内部原因,这些是我一直坚持使用的技术。
【问题讨论】:
-
欢迎来到 SO,埃里克! “..我被卡住了。”
标签: java apache-poi