operasi impor dan ekspor java excel (jxl)
Java menafsirkan data Excel (penggunaan paket jxl.jar)
Kata Kunci : java excel jxl.jar
alamat pengunduhan paket jxl.jar:
http://www.andykhan.com/jexcelapi/
Alamat unduhan sebenarnya:
http://www.andykhan.com/jexcelapi/download.html
Ciri-cirinya dijelaskan di website sebagai berikut:
● Mendukung semua versi Excel 95-2000 ● Menghasilkan format standar Excel 2000 ● Mendukung operasi font, angka, dan tanggal ● Mampu memodifikasi atribut sel ● Mendukung gambar dan grafik Harus dikatakan bahwa fungsi-fungsi di atas secara kasar dapat memenuhi kebutuhan kita. Yang terpenting API ini murni Java dan tidak bergantung pada sistem Windows, meskipun berjalan di Linux, tetap dapat memproses file Excel dengan benar. Perlu diperhatikan juga bahwa rangkaian API ini memiliki dukungan yang sangat terbatas untuk grafik dan bagan, dan hanya mengenali format PNG.
Untuk membangun lingkungan, buka paket file yang diunduh untuk mendapatkan jxl.jar, masukkan ke dalam classpath, dan instalasi selesai.
Operasi dasar
1. Buat file untuk menghasilkan file Excel bernama "Test Data.xls", di mana lembar kerja pertama diberi nama "Halaman Pertama".
kode Jawa
/*
* Dibuat pada 30 Desember 2007
*
* Untuk mengubah template untuk file yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
paket JExcelTest.standar;
import java.io.*;
impor jxl.*;
import jxl.write.*;
/**
* @penulis Ken
*
* Untuk mengubah templat untuk jenis komentar yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
kelas publik BuatXLS {
public static void main(String[] args) {
mencoba {
//buka berkas.
Buku WritableWorkbook = Buku Kerja.createWorkbook(File baru("d:/Test.xls"));
//buat Sheet dengan nama "Sheet_1".
Lembar WritableSheet = buku.createSheet("Sheet_1", 0);
//tentukan kolom dan baris sel di Pembuat Label, dan isi sel tulis "tes".
//sel adalah Kolom ke-1, Baris ke-1 nilainya adalah "tes".
Label label = Label baru(0, 0, "uji");
//tambahkan sel yang ditentukan di atas ke instance sheet.
sheet.addCell(label);
//membuat sel menggunakan penambahan numerik. PERINGATAN:harus menggunakan jalur paket terintegrasi, jika tidak maka akan terjadi kesalahan jalur.
//sel adalah Kolom ke-2, Nilai Baris ke-1 adalah 789.123.
jxl.write.Number number = jxl.write.Number baru(1, 0, 789.123);
//tambahkan sel yang ditentukan di atas ke instance sheet.
sheet.addCell(angka);
//tambahkan semua sel yang ditentukan di atas ke huruf besar/kecil.
buku.tulis();
//menutup kasus file.
buku.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
Setelah Java dikompilasi dan dijalankan, file Excel akan dibuat di lokasi saat ini.
2. Baca file tersebut. Ambil file Excel yang baru saja kita buat sebagai contoh untuk melakukan operasi pembacaan sederhana. Kode programnya adalah sebagai berikut:
kode Jawa
/*
* Dibuat pada 30 Desember 2007
*
* Untuk mengubah template untuk file yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
paket JExcelTest.standar;
import java.io.*;
impor jxl.*;
/**
* @penulis Ken
*
* Untuk mengubah templat untuk jenis komentar yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
kelas publik ReadXLS {
public static void main(String[] args) {
mencoba {
Buku buku kerja = Buku Kerja.getWorkbook(File baru("d:/Test.xls"));
//mendapatkan objek Sheet.
Lembar lembar = buku.getSheet(0);
//dapatkan konten Kolom ke-1, Baris ke-1.
Sel sel = sheet.getCell(0, 0);
Hasil string = sel.getContents();
System.out.println(hasil);
buku.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
Hasil eksekusi program: tes
3. Memodifikasi file Anda dapat menggunakan jExcelAPI untuk memodifikasi file Excel yang ada. Saat memodifikasi file Excel, kecuali cara membuka file yang berbeda, operasi lainnya sama dengan membuat Excel. Contoh berikut menambahkan lembar kerja ke file Excel yang telah kita buat:
Ubah kelas Excel dan tambahkan lembar kerja
kode Jawa
/*
* Dibuat pada 30 Desember 2007
*
* Untuk mengubah template untuk file yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
paket JExcelTest.standar;
import java.io.*;
impor jxl.*;
import jxl.write.*;
/**
* @penulis Ken
*
* Untuk mengubah templat untuk jenis komentar yang dihasilkan ini, buka
* Jendela>Preferensi>Java>Pembuatan Kode>Kode dan Komentar
*/
Pembaruan kelas publikXLS {
public static void main(String[] args) {
mencoba {
//dapatkan berkas.
Buku Kerja wb = Buku Kerja.getWorkbook(File baru("d:/Test.xls"));
//buka file salinan (file baru), lalu tulis konten dengan konten yang sama dengan Test.xls.
Buku Buku Kerja yang Dapat Ditulis =
Buku Kerja.createWorkbook(File baru("d:/Test.xls"), wb);
//tambahkan Lembar.
Lembar WritableSheet = buku.createSheet("Sheet_2", 1);
sheet.addCell(Label baru(0, 0, "test2"));
buku.tulis();
buku.close();
} tangkapan (Pengecualian e) {
e.printStackTrace();
}
}
}
Operasi tingkat lanjut
1. Pemformatan data di Excel tidak melibatkan tipe data yang rumit. Ia dapat menangani string, angka, dan tanggal dengan relatif baik dan cukup untuk aplikasi umum.
Pemformatan string Pemformatan string melibatkan elemen seperti font, ketebalan, ukuran font, dll. Fungsi-fungsi ini terutama bertanggung jawab untuk kelas WritableFont dan WritableCellFormat. Misalkan kita menggunakan pernyataan berikut ketika membuat sel yang berisi string. Untuk kemudahan deskripsi, kita memberi nomor pada setiap baris perintah:
WritableFont font1= baru WritableFont(WritableFont.TIMES,16,WritableFont.BOLD);
atau
//Atur format font ke format yang didukung oleh excel
WritableFont font3=new WritableFont(WritableFont.createFont("楷体_GB2312"),12,WritableFont.NO_BOLD );
① WritableCellFormat format1=baru WritableCellFormat(font1);
② Label label=Label baru(0,0,”uji data 4”,format1)
③ Diantaranya
I. Format string ditentukan: fontnya TIMES, ukuran fontnya 16, dan ditampilkan dalam huruf tebal. WritableFont memiliki sekumpulan konstruktor yang sangat kaya untuk digunakan dalam situasi yang berbeda. Ada daftar terperinci di java-doc jExcelAPI, yang tidak akan dicantumkan di sini.
II.Kode di atas menggunakan kelas WritableCellFormat, kelas ini sangat penting, melaluinya berbagai atribut sel dapat ditentukan.
III. Konstruktor kelas Label digunakan untuk menentukan format string yang diberikan. Di kelas WritableCellFormat, metode lain yang sangat penting adalah menentukan perataan data. Misalnya, untuk contoh di atas, Anda dapat menentukan:
//Tentukan perataan horizontal sebagai terpusat
format1.setAlignment(jxl.format.Alignment.CENTRE);
//Tentukan perataan vertikal sebagai terpusat
format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);
//Mengatur pembungkusan baris otomatis
format1.setWrap(benar);
2. Operasi sel
Bagian yang sangat penting dari Excel adalah pengoperasian sel, seperti tinggi baris, lebar kolom, penggabungan sel, dll. Untungnya, jExcelAPI menyediakan dukungan ini. Operasi ini relatif sederhana, dan hanya API relevan yang diperkenalkan di bawah ini.
1. Gabungkan sel
WritableSheet.mergeCells(int m,int n,int p,int q);
Fungsinya untuk menggabungkan semua sel dari (m,n) hingga (p,q), contoh:
WritableSheet sheet=book.createSheet("Halaman Pertama",0);
//Gabungkan semua sel dari baris pertama kolom pertama hingga baris pertama kolom keenam
sheet.mergeCells(0,0,5,0);
Penggabungan dapat bersifat horizontal atau vertikal. Sel yang digabungkan tidak dapat digabungkan lagi, jika tidak, pengecualian akan dipicu.
2. Tinggi baris dan lebar kolom
WritableSheet.setRowView(int i,int tinggi);
Fungsinya untuk menentukan tinggi baris ke i+1, contoh:
//Atur tinggi baris pertama menjadi 200
lembar.setRowView(0,200);
WritableSheet.setColumnView(int i,int lebar);
Fungsinya untuk menentukan lebar kolom i+1, contoh:
//Atur lebar kolom pertama menjadi 30
lembar.setColumnView(0,30);
3. Gambar operasi
kode Jawa
public static void write()melemparkan Pengecualian{
WritableWorkbook wwb=Buku Kerja.createWorkbook(File baru("c:/1.xls"));
WritableSheet ws=wwb.createSheet("Lembar Uji 1",0);
File file=File baru("C:\jbproject\PVS\WebRoot\weekhit\1109496996281.png");
Gambar WritableImage=WritableImage baru(1, 4, 6, 18,berkas);
ws.addImage(gambar);
wwb.tulis();
wwb.tutup();
}
Ini sangat sederhana dan sama dengan cara menyisipkan sel, tetapi memiliki lebih banyak parameter. Kelas WritableImage mewarisi Draw. Di atas hanyalah salah satu metode konstruksinya. Tak perlu dikatakan, parameter terakhir bertipe double dengan x, y, lebar, tinggi. Perhatikan bahwa lebar dan tinggi di sini bukanlah lebar dan tinggi gambar, tetapi jumlah unit yang ditempati gambar. Karena mewarisi Gambar, tipenya harus ganda. Saya belum melihat detail penerapannya :) Karena saya sedang terburu-buru, saya akan menyelesaikan fungsinya terlebih dahulu, dan saya akan punya waktu untuk mempelajari sisanya nanti. Saya akan terus menuliskan pengalaman saya menggunakannya di masa depan.
membaca:
Saat membaca, idenya seperti ini. Pertama gunakan aliran input (InputStream) untuk mendapatkan file Excel, lalu gunakan Buku Kerja di jxl untuk mendapatkan buku kerja, gunakan Lembar untuk mendapatkan lembar kerja dari buku kerja, dan gunakan Sel untuk mendapatkan a titik tertentu di sel lembar kerja.
InputStream->Workbook->Sheet->Cell, Anda akan mendapatkan sel dalam file excel
kode Jawa
String path="c:\excel.xls";//URL berkas Excel
InputStream adalah = FileInputStream baru(jalur);//Tulis ke FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //Dapatkan buku kerja
jxl.Sheet st = wb.getSheet(0);//Dapatkan lembar kerja pertama di buku kerja
Sel sel=st.getCell(0,0);//Dapatkan sel pertama lembar kerja, yaitu A1
String content=cell.getContents();//getContents() mengubah karakter dalam Sel menjadi string
wb.close();//Menutup buku kerja
is.close();//Menutup aliran input
String path="c:\excel.xls";//URL berkas Excel
InputStream adalah = FileInputStream baru(jalur);//Tulis ke FileInputStream
jxl.Workbook wb = Workbook.getWorkbook(is); //Dapatkan buku kerja
jxl.Sheet st = wb.getSheet(0);//Dapatkan lembar kerja pertama di buku kerja
Sel sel=st.getCell(0,0);//Dapatkan sel pertama lembar kerja, yaitu A1
String content=cell.getContents();//getContents() mengubah karakter dalam Sel menjadi string
wb.close();//Menutup buku kerja
is.close();//Menutup aliran input. Kita bisa mendapatkan sel apa pun melalui metode getCell(x,y) Sheet, dan x, y sesuai dengan koordinat di excel.
Misalnya, A1 sama dengan (0,0), A2 sama dengan (0,1), dan D3 sama dengan (3,2). Koordinat di Excel dimulai dari A,1, tetapi di jxl semuanya dimulai dari 0.
Anda juga bisa mendapatkan jumlah baris dan kolom melalui metode getRows() dan getColumns() Sheet, dan menggunakannya untuk kontrol loop guna menampilkan semua konten dalam sheet.
Menulis:
Untuk menulis konten ke Excel, Anda terutama menggunakan kelas dalam paket jxl.write.
Idenya adalah ini:
OutputStream<-WritableWorkbook<-WritableSheet<-Label
Label di sini mewakili lokasi dan konten Sel yang ditulis pada Lembar.
kode Jawa
OutputStream os=fileOutputStream baru("c:\test.xls");//Output URL file Excel
WritableWorkbook wwb = Workbook.createWorkbook(os);//Membuat buku kerja yang dapat ditulis
WritableSheet ws = wwb.createSheet("sheet1", 0);//Membuat lembar kerja yang dapat ditulis
Label labelCF=Label baru(0, 0, "halo");//Membuat lokasi penulisan dan konten
ws.addCell(labelCF);//Tulis Label ke dalam lembar
Konstruktor label Label(int x, int y, String aString) xy berarti xy saat membaca, dan aString adalah konten tertulis.
WritableFont wf = new WritableFont(WritableFont.TIMES, 12, WritableFont.BOLD, false);//Mengatur font tulisan
WritableCellFormat wcfF = WritableCellFormat baru(wf);//Atur CellFormat
Label labelCF=Label baru(0, 0, "halo");//Membuat lokasi penulisan, isi dan format
Konstruktor Label lainnya, Label(int c, int r, String cont, CellFormat st), dapat memformat konten tertulis, mengatur font dan atribut lainnya.
Anda bisa menulis sekarang
wwb.tulis();
Tutup setelah menulis
wwb.tutup();
Tutup juga aliran keluaran
os.close;
Oke, selama Anda menggabungkan membaca dan menulis, Anda bisa membaca data di N Excel dan menuliskannya ke dalam tabel Excel baru yang Anda inginkan, yang cukup nyaman.
Berikut ini contoh programnya:
kode Jawa
sql = "pilih * dari nama tabel";
rs = stmt.executeQuery(sql);
//Buat file Excel baru
String filePath=permintaan.getRealPath("aaa.xls");
File myFilePath=File baru(filePath);
if(!myFilePath.exists())
myFilePath.createNewFile();
FileWriter resultFile=FileWriter baru(myFilePath);
PrintWriter myFile=printWriter baru(resultFile);
resultFile.close();
//Gunakan JXL untuk menambahkan konten ke file yang baru dibuat
OutputStream keluar = FileOutputStream baru(filePath);
jxl.write.WritableWorkbook wwb = Buku Kerja.createWorkbook(outf);
jxl.write.WritableSheet ws = wwb.createSheet("sheettest", 0);
ke dalam saya=0;
ke dalam j=0;
untuk (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(Label baru(k,0,rs.getMetaData().getColumnName(k+1)));
}
while(rs.next()){
keluar.println(rs.getMetaData().getColumnCount());
untuk (int k = 0; k < rs.getMetaData().getColumnCount(); k++) {
ws.addCell(Label baru(k,j+i+1,rs.getString(k+1)));
}
saya++;
}
wwb.tulis();
wwb.close();
}menangkap(Pengecualian e){e.printStackTrace();}
Akhirnya{
rs.close();
samb.close();
}
respon.sendRedirect("aaa.xls");
Artikel ini berasal dari blog CSDN. Harap sebutkan sumbernya saat mencetak ulang: http://blog.csdn.net/yangf1984/archive/2009/12/28/5088933.aspx