Proyek perlu mengurai dokumen Excel untuk mendapatkan data, jadi saya menemukan beberapa informasi secara online, dan dikombinasikan dengan penggunaan saya kali ini, dan menuliskan pengalaman saya:
1. Ketergantungan berikut diperlukan untuk proyek Maven:
<dependency> <GroupId> org.apache.poi </groupid> <ArtiFacTId> poi </artifactid> <version> 3.10-final </version> </dependency> <dependency> <groupid> org.apache.poi </sroupid> <Artifactid> poi-oxml </Artifache.poi </groupId> <Artifactid> poi-oxml </Artifache.poi </groupId> <ArTifactid> poi-oxml </artifache.poi </groupId> <Artifactid> poi-oxml </ArtifacheD>
Langsung pergi ke kelas tes, dengan anotasi lengkap di kelas:
Paket shindo.java; import java.io.fileInputStream; import java.io.inputStream; import java.util.arraylist; import java.util.list; import org.apache.poi.hssf.usermodel.hssfcell; impor.apache.apache. org.apache.poi.hssf.usermodel.hssfworkbook; impor org.apache.poi.ss.usermodel.cell; impor org.apache.poi.xssf.usermodel.xssfcell; impor org.apache.poi.xssf.usermodel. org.apache.poi.xssf.usermodel.xssfsheet; impor org.apache.poi.xssf.usermodel.xssfworkbook; kelas publik excelutil {public static main (string [] args) {string path = "d: //dide/dixpace; coba {list <list <string>> result = new excelutil (). readxls (path); System.out.println (result.size ()); untuk (int i = 0; i <result.size (); i ++) {Daftar <string> model = result.get (i); System.out.println ("OrderNum:" + Model.get (0) + "-> OrderAmount:" + Model.get (1)); }} catch (Exception e) {e.printstacktrace (); }} /** * * @title: readxls * @description: memproses file xls * @param @param path * @param @return * @param @throws Exception set file * @return daftar <string>. File Excel dalam memori HSSFWorkBook Type Object, yang mewakili seluruh file Excel. * 3. Loop untuk setiap halaman dari file Excel ini* 4. Loop untuk setiap baris di setiap halaman* 5. Proses setiap sel di setiap baris untuk mendapatkan nilai sel ini* 6. Tambahkan hasil baris ini ke array daftar* 7. Tambahkan hasil setiap baris ke Total Hasil* 8. Setelah Parsing, objek Daftar Tipe <Daftar <String >> diperoleh*** InputStream adalah = FileInputStream baru (path); // HSSFWorkbook mengidentifikasi seluruh excel hssfworkbook hssfworkbook = hssfworkbook baru (IS); Daftar <Daftar <String>> hasil = Daftar ArrayList baru <Daftar <String>> (); ukuran int = hssfworkbook.getNumberofsheets (); // Loop setiap halaman dan proses halaman loop saat ini untuk (int numsheet = 0; numsheet <size; numsheet ++) {// hssfsheet mengidentifikasi halaman tertentu hssfsheet hssfsheet = hssfworkbook.getsheetat (numsheet); if (hssfsheet == null) {lanjutan; } // Proses halaman saat ini dan baca setiap baris untuk (int rownum = 1; rownum <= hssfsheet.getlastrownum (); rownum ++) {// hssfrow mewakili baris hssfrow hssfrow = hssfsheet.getrow (rownum); int minsolix = hssfrow.getFirstcellnum (); int maxcolix = hssfrow.getLastCellNum (); Daftar <String> rowList = ArrayList baru <string> (); // Traversal dan Ubah baris untuk mendapatkan pemrosesan setiap elemen sel untuk (int colix = MINCOLIX; colix <maxcolix; colix ++) {// hssfcell mewakili sel hssfcell sel = hssfrow.getcell (colix); if (cell == null) {lanjutkan; } rowlist.add (getStringVal (sel)); } result.add (rowList); }} hasil pengembalian; } / ** * * @title: readxlsx * @description: memproses file xlsx * @param @param path * @param @return * @param @throws File Pengaturan Exception * @return Daftar <Daftar <String >> Tipe Return * @throws * / Private List <Daftar <string> <String> @RetRSX (String Path); XSSFWORKBOOK XSSFWORKBOOK = XSSFWorkbook baru (IS); Daftar <Daftar <String>> hasil = Daftar ArrayList baru <Daftar <String>> (); // Loop setiap halaman dan proses halaman loop saat ini untuk (xssfsheet xssfsheet: xssfworkbook) {if (xssfsheet == null) {lanjutkan; } // Proses halaman saat ini dan baca setiap baris untuk (int rownum = 1; rownum <= xssfsheet.getlastrownum (); rownum ++) {xssfrow xssfrow = xssfsheet.getrow (rownum); int minsolix = xssfrow.getFirstcellNum (); int maxcolix = xssfrow.getLastCellNum (); Daftar <String> rowList = ArrayList baru <string> (); untuk (int colix = minsolix; colix <maxcolix; colix ++) {xssfcell cell = xssfrow.getCell (colix); if (cell == null) {lanjutkan; } rowlist.add (cell.tostring ()); } result.add (rowList); }} hasil pengembalian; } // Masalah yang ada/** Faktanya, kadang -kadang data yang ingin kita dapatkan adalah data di Excel, tetapi pada akhirnya ditemukan bahwa hasilnya tidak ideal* jika data dalam excel Anda adalah angka, Anda akan menemukan bahwa yang sesuai dalam java telah menjadi metode notasi ilmiah. * Jadi saat mendapatkan nilai, Anda perlu melakukan beberapa pemrosesan khusus untuk memastikan bahwa Anda mendapatkan hasil yang Anda inginkan. Pendekatan online adalah memformat data numerik untuk mendapatkan hasil yang Anda inginkan. * Berikut ini adalah metode lain. Sebelum ini, mari kita lihat metode tostring () di POI: * * Metode ini adalah metode POI. Dari kode sumber, kita dapat menemukan bahwa aliran pemrosesan adalah: * 1. Dapatkan tipe sel * 2. Format data sesuai dengan jenis dan outputnya. Ini menciptakan banyak hal yang tidak kami cari*, jadi kami membuat transformasi metode ini. * / /*string publik ToString () {switch (getCellType ()) {case cell_type_blank: return ""; case cell_type_boolean: return getBooleanCellValue ()? "Benar": "false"; case cell_type_error: return erroreval.getText (getErrorCellValue ()); case cell_type_formula: return getCellFormula (); case cell_type_numeric: if (dateutil.iscellDateFormatted (this)) {dateFormat sdf = new SimpleDateFormat ("dd-mmm-yyyy") return sdf.format (getDateCellValue ()); } return getNumericCellValue () + ""; case cell_type_string: return getRichStringCellValue (). ToString (); Default: return "Jenis sel yang tidak diketahui:" + getCellType (); }}* / / *** Metode membangun kembali tostring default () dari poi adalah sebagai berikut* @title: getStringval* @description: 1. Untuk tipe yang tidak dikenal, atau mengosongkan, kembali "" Kontrol* 2. Jika itu angka, memodifikasi jenis sel menjadi string dan kemudian mengembalikan string, sehingga angka itu tidak dikembalikan Formatt Formatt* String type return * @throws */ string statis publik getStringVal (sel hssfcell) {switch (cell.getCellType ()) {case cell.cell_type_boolean: return cell.getBooleanCellValue ()? "Benar": "false"; case cell.cell_type_formula: return cell.getCellFormula (); case cell.cell_type_numeric: cell.setCellType (cell.cell_type_string); return cell.getStringCellValue (); case cell.cell_type_string: return cell.getStringCellValue (); Default: return ""; }}}Meringkaskan
Di atas adalah semua konten dari artikel ini tentang menggunakan paket POI untuk membaca kode dokumen Excel di Java. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!