使用 Apache-POI 从 Excel 文件中搜索记录的有效方法

2023-12-03

我正在创建一个Web应用程序,它允许您从Excel工作表中搜索一些记录。需要搜索的Excel工作表很大,它有100k行和500列。

为此应该使用什么方法?我只想允许用户在此 Excel 工作表上执行搜索,那么我应该使用数据库吗(首先我需要在数据库中设置 Excel 工作表值)?或者还有比这更好的方法吗?

Apache POI 是否提供任何此类直接方法来搜索 excel 文件?

对于这种情况,最有效的方法是什么。将不胜感激有关相应链接的帮助


由于您正在处理的Excel文件很大,我建议您使用XSSF + SAX方法。 通过这种方法,您可以流式传输将数据存储在 Excel 文件内的 XML 文件。 您可以从 SAX 解析器生成的事件中捕获数据。将搜索数据与每一行进行比较。 对于每次搜索,您都必须流式传输整个 XML,但速度确实很快。

------------------------已编辑----------------------------------

详细地,

将 .xlsx 文件重命名为 .zip。它会给你一个 zip 文件。打开它,您将看到一个名为“xl”的文件夹。在“xl”文件夹内集中关注以下内容。

工作表文件夹:包含每个工作表的 xml 表示形式。共享字符串.xml:用于跨工作表存储所有字符串值的公共位置。样式.xml:保存应用于单元格的样式(颜色、公式...)的常见位置。工作簿.xml:包含有关 .xlsx 文件中所有工作表的信息

现在从 workbook.xm 开始旅程。在该文件内,所有工作表都被标签覆盖。 片材表示为<sheet> Eg: <sheet name="General" sheetId="15" r:id="rId1"/>以 r:id 为例,它将帮助您访问代表 .xlsx 文件的常规表的 General.xml。

一旦你有了 r:id,http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api将帮助您读取 XML 文件并获取其内容。

OPCPackage pkg = OPCPackage.open(filename); //opens the .xlsx file
XSSFReader r = new XSSFReader( pkg ); //reads the xml fiels indide the .xlsx file
XMLReader parser = fetchSheetParser(sst); //SAX parser for parsing the XML files.

使用 XSSFReader 向解析器提供 XMl 读取,编写一个实现 DefaultHandler 接口的事件处理程序来捕获 XMLReader 生成的事件。

SharedStringsTable sharedStringsTable = reader.getSharedStringsTable(); // using this we can access sharedStrings.xml 
StylesTable stylesTable = reader.getStylesTable(); // using this we can access styles.xml 

Since we are streaming the XML, we dont have to worry about memory consumption.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache-POI 从 Excel 文件中搜索记录的有效方法 的相关文章

随机推荐