Menghasilkan file excel sederhana
Di kantor nyata, kami sering memiliki persyaratan: kami mengharuskan laporan dibuka secara langsung di Excel. Ada kebutuhan seperti itu selama magang. Permintaan semua informasi dari lampiran yang disediakan oleh pengguna berdasarkan sumber daya yang dipilih dan menghasilkan Excel untuk diunduh. Namun, saat meminta, kita perlu memeriksa apakah ada kesalahan dalam informasi dalam lampiran yang disediakan oleh pengguna (kartu ID). Ada pesan kesalahan yang menghasilkan kesalahan Excel.
Proyek POI Apache saat ini merupakan antarmuka HSSF yang relatif matang yang digunakan untuk memproses objek Excel. Faktanya, POI tidak hanya menangani Excel, tetapi juga dapat menangani Word, PowerPoint, Visio, dan bahkan Outlook.
Di sini saya pertama -tama akan memperkenalkan cara menghasilkan excel menggunakan POI.
Pertama -tama, sebelum menghasilkan Excel, kita perlu memahami organisasi file Excel. Dalam POI, dipahami sebagai berikut: File Excel sesuai dengan buku kerja, dan buku kerja terdiri dari beberapa lembar. Lembar memiliki beberapa baris, dan satu baris umumnya memiliki banyak sel.
Untuk empat kata benda di atas yang dapat kita pahami pada gambar di bawah ini
Untuk menghasilkan Excel, POI menyediakan objek dasar berikut:
Dari gambar di atas dan Excel Struktur Organisasi, kita dapat memahami langkah -langkah untuk membuat Excel.
1. Hasilkan Objek Dokumen HSShworkbook.
2. Hasilkan bentuk hssfsheet melalui HSSFWorkbook.
3. Hasilkan baris melalui hssfsheet
4. Hasilkan sel hssfcell melalui hssfrow.
Ini kode tampilan:
BEAN ERROR KARTU IDENTITAS (errorCondition.java)
Public Class ErrorCondition {Private String Name; // Nama Private String IDCard; // Kartu ID Status String Pribadi; // Status Kesalahan Pesan String Pribadi; // kesalahan pesan kesalahanCondition (nama string, string idcard, string status, string pesan) {this.name = name; this.idcard = idcard; this.status = status; this.message = pesan; } public string getName () {return name; } public void setName (name string) {this.name = name; } string publik getIdcard () {return idcard; } public void setIdcard (string idCard) {this.idcard = idcard; } public String getStatus () {status return; } public void setStatus (status string) {this.status = status; } public String getMessage () {return pesan; } public void setMessage (string message) {this.message = pesan; }}Kelas Pemrosesan (Exporterrorexcel.java)
Public Class ExporterRorexcel {public static void main (String [] args) {// Langkah 1 Buat Buku Kerja HSSFWorkbook WB = HSSFWorkbook baru (); // Langkah 2 Buat lembar hssfsheet sheet = wb.createSheet ("Pesan kesalahan kartu ID"); // Langkah 3 Buat baris baris: Tambahkan 0 baris tajuk tabel hssfrow row = sheet.createrow (0); Hssfcellstyle style = wb.createCellstyle (); style.setalignment (hssfcellstyle.align_center); // Center // Langkah 4: Buat sel hssfcell sel = row.createCell (0); // sel sel pertama.setCellValue ("name"); // atur value cell.setCellstyle (style); // sel konten tengah = row.createCell (1); // sel sel kedua.setCellValue ("kartu id"); cell.setCellstyle (gaya); sel = row.createCell (2); // sel sel ketiga.setCellValue ("status kesalahan"); cell.setCellstyle (gaya); sel = row.createCell (3); // sel sel keempat.setCellValue ("pesan kesalahan"); cell.setCellstyle (gaya); // langkah kelima menyisipkan daftar data <CALRORCondition> Daftar = ExporterRorexcel.GetErrorCondition (); untuk (int i = 0; i <list.size (); i ++) {errorCondition errorCondition = list.get (i); // Buat baris = sheet.createrow (i+1); // Buat sel dan tambahkan baris data.createCell (0) .setCellValue (errorCondition.getName ()); row.createCell (1) .setCellValue (errorCondition.getIdcard ()); row.createCell (2) .setCellValue (errorCondition.getstatus ()); row.createCell (3) .setCellValue (errorCondition.getMessage ()); } // Langkah 6 Simpan file Excel yang dihasilkan ke jalur yang ditentukan coba {fileoutputStream fout = new FileOutputStream ("d: //errorcondition.xls"); WB.Write (fout); fout.close (); } catch (ioException e) {e.printstacktrace (); } System.out.println ("Excel File Generation berhasil ..."); } Daftar Statis Public <BerrorCondition> getErrorCondition () {list <at errorCondition> Daftar = ArrayList baru <CrorterCondition> (); ErrorCondition r1 = new errorCondition ("zhang san", "4306821989021611", "l", "error panjang"); ErrorCondition r2 = new errorCondition ("li si", "430682198902191112", "x", "periksa kesalahan"); ErrorCondition r3 = new errorCondition ("wang wu", "", "n", "Informasi kartu identitas kosong"); list.add (r1); list.add (r2); list.add (r3); daftar pengembalian; }} Melalui enam langkah di atas, Anda dapat menghasilkan file Excel di lokasi yang ditentukan.
Implementasi Java POI menyisipkan gambar ke dalam Excel
Melakukan pengembangan web tidak bisa dihindari untuk berurusan dengan Excel. Hari ini, bos memberi saya tugas - Ekspor Excel. Apa yang saya pikirkan pada awalnya cukup sederhana, itu hanya mencari, membangun Excel, dan mengunduh respons. Tetapi ada satu perbedaan, yaitu, Anda perlu menambahkan gambar, ini yang telah ditambahkan untuk waktu yang lama. Pada saat yang sama, tidak ada informasi yang baik yang ditemukan di internet, jadi saya menulis posting blog ini untuk merekamnya untuk teman -teman saya dan blog saya untuk meminta dan referensi.
Ada objek HSSFPatriark di POI, yang merupakan manajer top untuk menggambar. Metode createPicture (Anchor, PictureIndex) dapat menyisipkan gambar di Excel. Jadi, Anda perlu memasukkan gambar ke Excel dan Anda bisa melakukannya dalam tiga langkah. 1. Dapatkan objek HSSFPATRIACH, 2. Objek HSSFClientAngor baru, 3. Panggil saja metode createPicture. Implementasi sangat mudah diimplementasikan, tetapi masih agak sulit untuk melakukannya dengan baik. Di sini pertama -tama kita memasukkan gambar:
kelas publik excelimageTest {public static void main (string [] args) {fileoutputStream fileout = null; BufferedImage bufferImg = null; // Pertama -tama masukkan bacaan di gambar ke dalam bytearrayoutputStream untuk menghasilkan bytearray coba {bytearrayoutputStream bytearrayout = bytearrayoutputStream (); bufferImg = imageo.read (file baru ("f: /picture/anounty/xiaozhao11.jpg")); Imageo.write (bufferImg, "jpg", bytearrayout); Hssfworkbook wb = hssfworkbook baru (); Hssfsheet sheet1 = wb.createSheet ("uji gambar"); // Manajer teratas untuk menggambar hanya bisa mendapatkan satu lembar (pastikan untuk memperhatikan poin ini) hssfpatriarch patriarch = sheet1.createdrawingpatriarch (); // Anchor terutama digunakan untuk mengatur atribut gambar hssfclientanchor anchor = hssfclientanchor baru (0, 0, 255, 255, (pendek) 1, 1, (pendek) 5, 8); anchor.setanchortype (3); // Masukkan gambar patriark.createPicture (Anchor, wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)); fileout = new fileoutputStream ("d:/test excel.xls"); // tulis ke file excel wb.write (fileout); System.out.println ("--------"); } catch (Exception e) {E.PrintStackTrace (); } akhirnya {if (fileout! = null) {coba {fileout.close (); } catch (ioException e) {e.printstacktrace (); }}}}}}}}}} Berikut ini adalah hasilnya setelah eksekusi:
Adapun mengapa hasil ini terutama karena hssfclientanchor (0, 0, 255, 255, (pendek) 1, 1, (pendek) 5, 8) konstruktor. Izinkan saya menjelaskan konstruktor ini di bawah ini: hssfclientanchor (int dx1, int dy1, int dx2, int dy2, pendek col1, int row1, col2 pendek, int row2); Arti dari setiap parameter adalah sebagai berikut:
Di sini DX1 dan DY1 menentukan posisi awal gambar di sel awal, dan DX2 dan DY2 menentukan posisi akhir sel akhir. Col1 dan Row1 menentukan sel start, Col2 dan Row2 menentukan sel akhir.
Berikut ini dibuat dengan dua konstruktor yang berbeda. Dari gambar ini, kita dapat dengan jelas melihat makna dan perbedaan dari delapan parameter di atas.
Di atas adalah memasukkan satu gambar, jadi bagaimana dengan memasukkan beberapa gambar? Bahkan, ini sangat sederhana. Bangun beberapa objek HSSFClientanchor yang berbeda dan kontrol delapan parameter tersebut, sebagai berikut:
Hssfclientanchor anchor1 = hssfclientanchor baru (0, 0, 1023.100, (pendek) 1, 1, (pendek) 5, 8); Hssfclientanchor anchor2 = hssfclientanchor baru (0, 0, 1023.100, (pendek) 1, 9, (pendek) 5, 16); // Masukkan gambar patriark.createPicture (Anchor1, wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg)); patriark.createPicture (Anchor2, wb.addpicture (bytearrayout.tobytearray (), hssfworkbook.picture_type_jpeg));
Sisa kode adalah sama, dan hasil berikut diperoleh: