使用java在xlsx和xls文件中搜索

ash*_*cse 10 java excel jxl apache-poi jxls

我有一个大的xlsx文件,我必须实现搜索选项的大量数据我使用了Apache POI jar以及jxl jar,以便在行和列之间进行搜索.但是需要花费大量时间来遍历大数据,有些人可以帮助我,这是任何jar文件或任何其他可用于在Excel文件上更快地进行搜索的概念......

    String searchValue="my_value_to_search";
    for (int i = 0; i < sheet.getColumns(); i++) {
        for (int j = 0; j < sheet.getRows(); j++) {
            value = sheet.getCell(i, j);
            valueType = value.getType();
            String val=getCellType(valueType, value);
            if (val != null&&val==searchValue) {
                //   To do manipulation.
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

gee*_*rt3 6

瓶颈通常是一次在内存中表示大型XLSX文件所需的大量内存.(XLS不能设计得那么大,这通常不是问题).要在没有内存问题的情况下搜索非常大的XLSX文件,您可以这样做:

  • xlsx文件实际上是一个ZIP存档,您可以打开它并读取内容,就好像它是一个ZIP文件.
  • ZIP内部是文件夹"xl/worksheets",文件为sheet1.xml(和sheet2.xml等)
  • 您可以使用普通的XmlReader解析这些XML文件(使用回调来获得最大性能和最少的内存消耗).

希望有所帮助.

  • 我从来没有用过这个,但看看https://poi.apache.org/poifs/how-to.html - 这似乎与上面描述的XML技术相似,但这也适用于XLS:你动态解析文件并吃掉你需要的东西,因此不会将整个文件加载到内存中.不知道在流中实际找到XLS相关数据需要付出多少努力.祝好运 (4认同)
  • XLS文件最多只能是65K行,这通常可以很好地适应内存.不幸的是,我知道XLSX没有类似的解决方法. (2认同)