2013-12-23 5 views
10

Ich habe eine große xlsx-Datei, die als große Menge von Daten, auf die ich die Suchoption implementieren muss ich Apache POI jar sowie jxl jar verwendet haben, so dass die Suche zwischen Zeilen und Spalten sind gemacht worden. Aber es dauerte enorm viel Zeit zwischen großen Daten zu durchqueren kann mir jemand helfen, dass jede JAR-Dateien oder andere Konzept verfügbar, um die Suche schneller auf Excel-Dateien zu tun ...Suche in xlsx und xls Datei mit Java

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. 
      } 
     } 
    } 
+3

Ich habe Multithreading für eine solche Aufgabe einmal verwendet. Mein Hauptthread hat die xlsx-Datei geparst und die Arbeitsmappe erstellt, dann hat sie 5 andere Threads erzeugt, die vom Hauptthread mit einer Anzahl von Datensätzen gleichzeitig gespeist werden. Auf diese Weise erhöhte sich die Leistung erheblich –

Antwort

6

Bottleneck ist in der Regel die riesige Menge an Speicher erforderlich, um große XLSX-Dateien im Speicher gleichzeitig darzustellen. (XLS kann nicht so groß sein, das ist normalerweise kein Problem). in einem wirklich großen XLSX-Datei, ohne dass die Speicherprobleme zu suchen, könnten Sie dies tun:

  • die xlsx-Datei in der Tat ist ein ZIP-Archiv, können Sie es öffnen und den Inhalt lesen, als ob es sich um eine ZIP-Datei.
  • innerhalb des ZIP sind Ordner „xl/Arbeitsblatt“ mit Dateien sheet1.xml (und sheet2.xml usw.)
  • Sie diese XML-Dateien mit einem normalen XmlReader (mit Rückrufen für maximale Leistung und am wenigsten Speicherverbrauch analysieren kann).

Hoffe, dass hilft.

+0

Danke für Ihre Wiederholung. Meine andere Frage war, was wird für meine große XLS-Datei sein ..? – ashokramcse

+2

XLS-Dateien können maximal 65K Zeilen groß sein, das passt normalerweise gut in den Speicher. Leider gibt es keine ähnliche Problemumgehung wie bei XLSX. – geert3

+0

In meinem Szenario habe ich mehr Anzahl von Blättern jedes Blatt ist mit allen Zellen mit eindeutigen Werten gefüllt, so dauerte es mehr Zeit beim Parsen von xls-Dateien zu. – ashokramcse

Verwandte Themen