在java-JXL或ApachePOI中阅读Excel工作表最好的API是什么
两个API中哪一个更易于读取/写入/编辑excel工作表? 这些API不支持CSV扩展吗 对file.xls和file.xlsx使用JXL时,会出现如下异常:在java-JXL或ApachePOI中阅读Excel工作表最好的API是什么,java,excel,apache-poi,jxl,Java,Excel,Apache Poi,Jxl,两个API中哪一个更易于读取/写入/编辑excel工作表? 这些API不支持CSV扩展吗 对file.xls和file.xlsx使用JXL时,会出现如下异常: jxl.read.biff.biffeException:无法识别OLE流 在jxl.read.biff.CompoundFile.(CompoundFile.java:116) 位于jxl.read.biff.File。(File.java:127) 在jxl.Workbook.getWorkbook(Workbook.java:268
jxl.read.biff.biffeException:无法识别OLE流
在jxl.read.biff.CompoundFile.(CompoundFile.java:116)
位于jxl.read.biff.File。(File.java:127)
在jxl.Workbook.getWorkbook(Workbook.java:268)
位于core.ReadXLSheet.contentReading(ReadXLSheet.java:46)
位于core.ReadXLSheet.init(ReadXLSheet.java:22)
位于core.ReadXLSheet.main(ReadXLSheet.java:72)
用于.xls和.xlsx扩展名。
我使用的Java版本是:JDK1.6我使用了POI
如果您使用它,请注意那些单元格格式化程序:创建一个并多次使用它,而不是每次为单元格创建,这是一个巨大的内存消耗差异或大数据。我不熟悉JXL,但我们使用POI。POI维护良好,可以处理二进制.xls格式和Office 2007中引入的新的基于xml的格式 CSV文件不是excel文件,它们是基于文本的文件,因此这些库不会读取它们。您需要自己解析出一个CSV文件。我不知道有任何CSV文件库,但我也没有查看过。我使用了(现在是“Jetcel”)和。起初我使用JXL,但现在我使用ApachePOI 首先,以下是两个API具有相同终端功能的情况:
- 两者都是免费的
- 单元样式:对齐、背景(颜色和图案)、边框 (类型和颜色)、字体支持(字体名称、颜色、大小、粗体、, 斜体、删除线、下划线)
- 公式
- 超链接
- 合并单元格区域
- 行和列的大小
- 数据格式:数字和日期
- 单元格内的文本换行
- 冻结窗格
- 页眉/页脚支持
- 读/写现有和新的电子表格
- 两者都试图在电子表格中尽可能保持现有对象的完整性
- 也许最显著的区别是JavaJXL不支持Excel2007+“.xlsx”格式;它只支持旧的BIFF(二进制)“.xls”格式。ApachePOI通过一种通用的设计支持这两种方法
- 此外,jxlapi的Java部分上一次更新是在2009年(我写这篇文章时是3年4个月前),尽管它看起来像是一个C#API。Apache POI是积极维护的
- JXL不支持条件格式,ApachePOI支持,尽管这并不重要,因为您可以使用自己的代码有条件地格式化单元格
- JXL不支持富文本格式,即文本字符串中的不同格式;ApachePOI确实支持它
- JXL仅支持某些文本旋转:水平/垂直、+/-45度和堆叠;ApachePOI支持任意整数度加上堆叠
- JXL不支持绘图形状;ApachePOI有
- JXL支持大多数页面设置设置,如横向/纵向、页边距、纸张大小和缩放。ApachePOI支持所有这些以及重复的行和列
- JXL不支持拆分窗格;ApachePOI有
- JXL不支持图表创建或操作;ApachePOI中还没有这种支持,但API正在慢慢形成
- ApachePOI有一套比JXL更广泛的文档和示例
总之,由于更好的文档、更多的功能、积极的开发和Excel 2007+格式支持,我使用Apache POI。为了阅读Java中的“普通”CSV文件,这里提供了一个名为OpenCSV的库:感谢您的详细解释。+1提供了清晰、简洁且非常有用的脏
getContents()
方法在JExcelAPI中节省了我很多时间。使用POI,您必须检查它的单元格类型,然后获取它的值(如果是数字单元格,则需要检查它是否是日期单元格)根据它的类型,最后用不同的方法将其转换为字符串值,这太不方便了。无法想象POI没有提供像JExcelAPI那样肮脏但方便的方法。如果POI是基于事件的读取,这是一件非常积极的事情。尤其是在移动设备(=Android)上,这在处理有限的堆大小和GC时有很大帮助。使用JXL读取简单的XLS通常会达到应用程序内存限制,导致应用程序崩溃。促使我迁移到POI的一个重要因素是灵活使用流式API,这是在您想读取包含大量数据的excel时必须使用的。您不会想要wol如果excel中的数据很大,则在打开excel时将数据加载到内存中。通过流式处理,解析工作表后,excel/任何office文档的全部内容都不会立即加载到内存中。Apache现在也有一个用于CSV的Commons产品。它工作得很好,并且有很好的品牌。关于:“有哪些API可以用Java读/写Microsoft Excel电子表格(JXL、Apache POI等)?使用它们的最佳方案是什么?”