我想在阅读之前检查文件(xls 或 xlsx)中是否存在给定的工作表(按名称或编号)。我正在使用事件 API 来解决内存占用问题,因此我不想使用 org.apache.poi.ss.usermodel.Workbook 对象。
我正在使用带有 JDK7 的 Apache POI 3.7。有人可以帮帮我吗?
谢谢,
段落
我想在阅读之前检查文件(xls 或 xlsx)中是否存在给定的工作表(按名称或编号)。我正在使用事件 API 来解决内存占用问题,因此我不想使用 org.apache.poi.ss.usermodel.Workbook 对象。
我正在使用带有 JDK7 的 Apache POI 3.7。有人可以帮帮我吗?
谢谢,
段落
对于这两种格式,使用 UserModel 代码进行检查的方法是相同的。
但是,您已经询问了事件 API。这些级别要低得多,因此两种格式之间的差异必须由您处理,因为两者之间没有任何东西可以隐藏它们。(如果您想要轻松的生活,只需为您的服务器购买更多内存并坚持使用 UserModel!)
对于 .xls 文件格式 (HSSF),工作表的详细信息存储在文件顶部附近。开始处理文件,并等待BoundSheetRecord (sid=0x0085) 过去。当您看到所有这些时,您就会知道您的工作表是否在文件中。如果是,则正常处理。如果没有,请中止。
对于 .xlsx 文件格式 (XSSF),打开文件并获取工作簿部分(它相当小)。检查是否存在哪些工作表,然后根据此决定是否要处理。如果您使用的是 XSSFReader,请调用getWorkbookData()
以获取 Workbook 部分,然后可能使用 XmlBeans 来处理它(通过WorkbookDocument.Factory
)