Potrzebuję stworzyć metodę, która może odczytać zarówno pliki xls, jak i xlsx. Zgodnie z moimi badaniami, HSSF jest używany do odczytu xls i XSSF do odczytu xlsx. Czy istnieje część Apache POI, której mogę użyć do odczytania obu plików? Natknąłem się również na ss.usermodel, ale nie znalazłem wystarczających kodów, które zabawiłyby zarówno xls, jak i xlsx ....Czy istnieje sposób odczytu plików .xls i .xlsx przy użyciu Apache POI?
Odpowiedz
Nie miałem dużo expów z Apache POI, ale o ile wiem, jeśli odnosisz się do skoroszyt po klasie "Workbook", możesz czytać i pisać zarówno xls & xlsx.
Wszystko co musisz zrobić, to podczas tworzenia obiektu pisać
dla .xls-
Workbook wb = new HSSFWorkbook();
dla .xlsx-
Workbook wb = new XSSFWorkbook();
można przekazać parametr do typu pliku i utworzyć obiekt WorkBook zgodnie z instrukcją If.
Witam! Też mam na myśli te kody i planowałem je wykorzystać, jeśli nie mogę znaleźć innego sposobu na wykrycie rozszerzenia pliku. –
Polecam sprawdzić to podstawowe narzędzie, aby przeczytać wszystkie pliki Excel: https://github.com/eaorak/excelr – noego
jedną z opcji byłoby sprawdzenie nazwy pliku z lastIndexOf dla. i zobacz, czy to jest .xls lub xlsx, a następnie użyj warunku if, aby odpowiednio zmienić. od dłuższego czasu pracowałem nad poi, ale myślę, że atrybuty są jak HSSF dla .xls i XSSF dla .xlsx referować na stronę http://poi.apache.org/, ostatnia linia pod tematem Dlaczego powinienem używać Apache POI?
dzięki za odpowiedź! Spróbuję rozważyć twoją odpowiedź –
Wygląda na to, że szukasz sposobu na streszczenie procesu odczytu, mówisz, że nie ma znaczenia, czy jego XLS czy XLSX, chcesz aby twój kod działał bez modyfikacji.
Polecam, aby przejrzeć Apache Tika, jego niesamowitą bibliotekę, która pobudza czytanie plików i parsowanie zawartości, wykorzystuje punkty POI i wiele innych bibliotek i ma ładną abstrakcję dla nich wszystkich.
czytanie pliku PDF/XLS/XLSX jest podobne do czytania pliku tekstowego, cała praca wykonywana jest za sceną.
przeczytaj to, aby uzyskać więcej informacji. http://www.searchworkings.org/blog/-/blogs/introduction-to-apache-tika
Dziękuję bardzo za sugestię Apache Tika, o której pierwszy raz czytam. Zajmę się tym i porówna go z Apache POI –
Tika używa punktów POI i wielu innych bibliotek, jest abstrakcją dla nich wszystkich, a nie zamiennikiem. –
Tak, istnieje nowy zestaw interfejsów udostępnianych przez POI, które działają z obydwoma typami.
Zastosowanie metody WorkbookFactory.create(), aby uzyskać skoroszytu: http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html
można sprawdzić plików excel bez polegania na rozszerzeń plików (które są zawodne - wiele plików csv mają rozszerzenia xls na przykład, ale nie może być analizowany według POI), używając:
//simple way to check for both types of excel files
public boolean isExcel(InputStream i) throws IOException{
return (POIFSFileSystem.hasPOIFSHeader(i) || POIXMLDocument.hasOOXMLHeader(i));
}
Hello! Dziękujemy za przesłany przez Ciebie kod. Uważam, że to lepsze niż długie kody, które próbowałem. –
.doc przejdzie tę kontrolę – gstackoverflow
Dzięki odpowiedzi Toma, aby dodać, użyj foll. Kod uzyskać InputStream jeszcze możemy zmierzyć Exception in thread "main" java.io.IOException: mark/reset not supported
InputStream inputStream = new FileInputStream(new File("C:\\myFile.xls"));
if(! inputStream.markSupported()) {
inputStream = new PushbackInputStream(fileStream, 8);
}
nice. dobry połów! – tom
można odczytać za pomocą POI-OOXML i poi-OOXML-schematu słoiki dostarczone przez Apache.
i skorzystać z poniższego kodu: -
Workbook wb = null;
excelFileToRead = new FileInputStream(fileName);
wb = WorkbookFactory.create(excelFileToRead);
Sheet sheet = wb.getSheet(sheetName);
powyższy kod będzie czytać zarówno xls i xlsx pliki
Można użyć
Workbook wb = WorkBookFactory().create(inputStream);
Używanie "pliku" jest ogólnie lepsze, zobacz http://poi.apache.org/spreadsheet/quick-guide.html#FileInputStream – Gagravarr
- 1. Konwersja csv do Xls/Xlsx za pomocą Apache poi?
- 2. Zapisuje plik w formacie xlsx przy użyciu Apache POI
- 3. Używanie C# do odczytu/zapisu plików Excel (.xls/.xlsx)
- 4. Błąd podczas odczytywania dużych plików Excel (xlsx) Via Apache POI
- 5. Otwórz EXISTING xls w Apache POI
- 6. Apache POI: SXSSFWorkbook.dispose() nie istnieje
- 7. Problemy z dopasowaniem arkusza do pojedynczej strony w plikach xlsx przy użyciu biblioteki Apache POI
- 8. Jak przetwarzać stare pliki Excela .xls przy użyciu POI?
- 9. przekonwertować plik TSV XLS/XLSX przy użyciu Pythona
- 10. Apache poi format daty
- 11. Odczytywanie danych z xlsx za pomocą SXSSFSheet Apache POI
- 12. Odczytywanie z pliku Excel .xlsx przy użyciu java Apache POI 3.9 Eclipse
- 13. Lekki Excel (XLS/XLSX) biblioteka php potrzebne
- 14. Wiersze POI Apache numer
- 15. Pamięć wydajna biblioteka Java do odczytu plików Excel?
- 16. Parse XLS/XLSX/xlsm w node.js
- 17. Tworzenie komentarzy komórek w apache poi (dla plików .xlsx) z wyłączonymi komentarzami show
- 18. Jak odczytać pliki xls i xlsx za pomocą C#
- 19. Apache POI SXSSF i XSSF
- 20. Parsowanie plików JXL i Apache POI z dołączonymi obiektami obrazu
- 21. Eksport JasperReports do xlsx, nie xls
- 22. Reading zapisywane jako xlsx xls z LinqToExcel
- 23. wstawić wiersz w programie Excel przy użyciu języka Java Apache POI
- 24. ColdFusion 8 zawsze otwiera .xls, .xlsx
- 25. Jak odczytać z scalonych komórek programu Excel w Javie przy użyciu Apache POI?
- 26. Utwórz kolumnę tylko do odczytu za pomocą apache poi
- 27. Jak wyodrębnić zwykły tekst z pliku DOCX przy użyciu nowej obsługi OOXML w Apache POI 3.5?
- 28. Używanie szablonów programu Excel z Apache POI
- 29. Tworzenie i zmienianie tabel Excel za pomocą Apache POI
- 30. Apache POI Performance
WorkbookFactory.create() musi być zaakceptowana odpowiedź. http://poi.apache.org/apidocs/org/apache/poi/ss/usermodel/WorkbookFactory.html –