将 SXSSF 保存为 .xls 文件

2023-12-03

我正在使用 Apache POI 库将大量数据导入 Excel 文件。我不能使用 HSSF 模型,因为它需要太多内存并且 Java 会抛出内存堆异常。我发现的方法是 SXSSF 工作簿模型,它将每 N 行写入文件,而不是将所有工作簿存储在内存中。但我找不到方法,如何将其保存为 .xls(Excel 2003 及更低格式)而不是 .xlsx。

File f = new File("file.xlsx");
f.createNewFile();
SXSSFWorkbook wb = new SXSSFWorkbook(200);
//inputing values here
FileOutputStream fileOut = new FileOutputStream(f);
wb.write(fileOut);
fileOut.close();

你不能。

As POI 组件页面上有说明,HSSF 用于处理 .xls 文件(基于 OLE2),XSSF/SXSSF 用于处理 .xlsx 文件 (.xlsx)

如果要生成 .xls 文件,则必须使用 HSSF UserModel。 HSSF不支持流式写入,仅支持流式读取.

.xls 文件格式不像 .xlsx(更多后退/前进引用、偏移量等)那么适合流式写入,因此 HSSF 不支持流式写入。只需增加您的 Java 堆大小,或者切换到 SXSSF for .xlsx,或者只使用简单的东西,比如 CSV!

.

Update如果您需要测试应该为系统分配多少内存来使用 HSSF 甚至 XSSF 进行写入,我建议您尝试使用SS性能测试示例,可以在命令行上运行。使用所有罐子和给定的堆大小启动它,看看它是否完成。它接受行数和列数以及要创建的文件类型的参数。使用夜间构建并尝试 40k 行/10 列,我可以让它在 90mb 堆中快速完成:

$ java -Xmx90m -classpath poi-3.10-beta3-20131219.jar:poi-examples-3.10-beta3-20131219.jar:poi-ooxml-3.10-beta3-20131219.jar \
     org.apache.poi.ss.examples.SSPerformanceTest HSSF 40000 10 1
Elapsed 1 seconds
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将 SXSSF 保存为 .xls 文件 的相关文章

随机推荐

  • 如何将一个值从一个jsp页面传递到另一个jsp页面?

    我有两个jsp页面 search jsp and update jsp 当我跑步时search jsp然后从数据库中获取一个值 并将该值存储在一个名为scard 现在 我想要的是在另一个 jsp 页面中使用该变量的值 我不想使用reques
  • blogdown 主页不再显示帖子目录

    我正在使用 blogdown 0 14 和稍微修改过的hugo lithium 主题 创建的博客的主页似乎已更改 它曾经是一个带有帖子目录的页面 而不是一个带有指向显示该目录的页面的链接的页面 有没有办法恢复旧的行为 一小时前提到过在推特上
  • 根据屏幕尺寸替换 HTML

    我试图在小屏幕尺寸下替换 HTML 内容 然后在窗口再次变大时替换它 我下面的代码可以工作 但是我如何让它删除更改 到目前为止 这是我的代码 window resize function if window innerWidth lt 48
  • IOCP 文档解释问题 - 缓冲区所有权歧义

    因为我不是以英语为母语的人 所以我可能会错过一些东西 所以也许这里有人比我更了解 取自WSASendMSDN 上的文档 lpBuffers 输入 指向 WSABUF 数组的指针 结构 每个WSABUF结构 包含一个指向缓冲区的指针和 缓冲区
  • Visual Studio - SharePoint 2010 - 包括程序集 > 快速问题

    我有一个简单的问题 构建 VS 2010 SharePoint 项目 并且我正在引用自定义程序集 我可以在我的代码中引用这个程序集 并且编写代码和所有内容都可以正常工作 当我将项目部署到 SharePoint 时 我的功能激活代码将不会运行
  • 在数据步骤中表达“PUT所有变量”以导出SAS数据

    目标 使用数据步骤将整个 SAS 数据集导出到制表符分隔的文本文件 问题 在我能找到的每个例子中 例如this one 必须指定 PUT 语句后面的数据步骤中的每个变量 难道没有一种简单的方法来只要求 所有 变量吗 我已经尝试过使用PUT
  • 将上传的文件作为电子邮件附件发送

    我是网页设计的新手 我需要用 HTML 创建一个表单 要求用户输入多个字段并上传他 她的简历 当他提交表格时 他的提交内容应该通过电子邮件发送给我 并附上他的简历作为电子邮件的附件 我使用 PHP 来发送电子邮件 一切正常 除了文件未附加到
  • 无法访问 XCTestCase 对象中的 AppDelegate(或引用它的任何内容)

    我正在尝试在我的 swift iOS 应用程序上开始单元测试 但遇到了完全的障碍 我似乎无法访问任何使用我的 appDelegate 的内容 我的 appDelegate 有一个UserController存储和管理登录用户及其各种数据的对
  • 用音频录制点击的按钮

    我正在创造一种乐器 我希望录制按钮可以录制音频和点击的内容 但是当我点击录制按钮时 它只录制音频 我想录制音频以及用户点击的内容 这是我的记录代码 public void startRecord throws Exception recor
  • 使用 sed 引用特殊字符

    我试图查看传递给我的程序的变量 变量是 1 并用所述特殊字符的引号形式替换任何特殊字符 以免特殊字符实际上执行通常的操作 我的代码是 bin sh target 1 newtarget echo target sed e s g newta
  • “数组/指针等效”的现代术语是什么?

    几乎每个阅读本文的人都可能熟悉有关 C 的以下三个关键事实 当您在表达式中提及数组的名称时 它 大多数情况下 计算结果为指向数组第一个元素的指针 数组下标 运算符 对于指针和数组来说同样有效 看似数组的函数参数实际上声明了一个指针 这三个事
  • 如何获取用户数据中的 AWS 实例标签?

    我将 aws ec2 userdata 与 windows powershell 脚本结合使用 我需要实例引导 我的想法是 EC2实例标签添加 它的键名称 Version 它的值 1 0 0 158 branchname 我尝试获取用户数据
  • 如何使用PHP和SQL Server 2008调用存储过程

    我正在使用 SQL Server 2008 和 PHP 我想在 PHP 中调用存储过程 请指导我 Regards read mssql execute conn mssql connect host user pass mssql sele
  • 是否可以在 C# 中使用 Microsoft 的脱机文件 API?

    我正在尝试弄清楚如何使用离线文件API来自 C 如果可能 我相信 如果 API 是 COM API 那么理论上我应该能够使用以下方法从 C 调用它here 不幸的是 我不知道它是否是 COM API 也不知道如何判断 作为一个更一般的旁注
  • 手动优化嵌套循环

    我正在做一项家庭作业 我必须手动优化嵌套循环 我的程序将在禁用优化的情况下编译 作业的目标是在 6 秒内运行整个程序 少于 4 5 秒的加分 我只允许更改一小块代码 起点是这样的 for j 0 j lt ARRAY SIZE j sum
  • Scala REPL“错误:值>不是类型参数T的成员”

    这是我的文件 trait Set T def contains x T Boolean def incl x T Set T def union that Set T Set T class Empty T extends Set T ov
  • 如何在Monodroid中使用dropnet、sharp box等库

    我已经在图像上传器上创建了一个桌面应用程序 现在我想使用 Monodroid 将其移植到 Android 应用程序将图像上传到保管箱 在桌面版本中 我使用了 dropnet 它引用了 sharpbox Json 等 有什么方法可以在我的 m
  • 如何让ANTLR消耗所有可见元素?

    这是我的语法 grammar test text foo EOF foo X foo foo foo tail tail foo 我正在解析这段文字 X X X X 这是我得到的树 语法应该改变什么才能让我只得到一个tail包含所有元素的集
  • C 使用 scanf() 进行 |分隔字符串

    我想输入一些字符串然后两个整数 字符串由 分隔 而整数则由 分隔 在网上浏览时我看到了某种语法 其中涉及 我正在使用这个 但它根本不起作用 有人可以指出我应该做什么以及为什么我所做的事情是错误的吗 sscanf str s s s i i
  • 将 SXSSF 保存为 .xls 文件

    我正在使用 Apache POI 库将大量数据导入 Excel 文件 我不能使用 HSSF 模型 因为它需要太多内存并且 Java 会抛出内存堆异常 我发现的方法是 SXSSF 工作簿模型 它将每 N 行写入文件 而不是将所有工作簿存储在内