Komunitas open source telah menciptakan banyak proyek Java open source, mulai dari perangkat lunak pembuatan bagan hingga kerangka permainan hingga pengolah kata. Dalam posting ini, saya memperkenalkan proyek perpustakaan open source untuk membaca dan menulis spreadsheet Microsoft Excel.
Merekomendasikan perpustakaan spreadsheet
T: Saya telah diminta untuk memperluas perangkat lunak spreadsheet berbasis Java perusahaan saya untuk membaca dan menulis spreadsheet Excel. Dapatkah Anda merekomendasikan pustaka Java sumber terbuka yang akan membantu saya dalam tugas ini?
J: Anda mungkin ingin melihat JExcelAPI, yang merupakan pustaka open source berbasis Java yang memungkinkan Anda membaca, menulis, dan memodifikasi spreadsheet Excel. Berikut ini beberapa dari banyak fiturnya:
- Membaca data dari buku kerja Excel 95, 97, 2000, XP, dan 2003
- Membaca dan menulis rumus (hanya Excel 97 dan yang lebih baru)
- Menghasilkan spreadsheet dalam format Excel 2000
- Mendukung format font, angka, dan tanggal
- Mendukung bayangan sel, batas sel, dan pewarnaan sel
- Mengubah lembar kerja yang sudah ada
- Mendukung penyalinan grafik
- Mendukung penyisipan dan penyalinan gambar ke dalam spreadsheet
JExcelAPI dikembangkan oleh Andrew Kahn dan dirilis di bawah GNU Lesser General Public License.
Mendownload perpustakaan JExcelAPI
T: Bagaimana cara mengunduh JExcelAPI?
J: Selesaikan langkah-langkah berikut untuk mengunduh JExcelAPI:
- Arahkan browser Anda ke situs SourceForge JExcelAPI.
- Klik
jexcelapi
link tersebut. - Pada halaman yang dihasilkan, klik salah satu link folder. Misalnya, saya mengklik
2.6.12
link. - Pada halaman yang dihasilkan, klik nama file arsip distribusi. Misalnya, saya mengklik
jexcelapi_2_6_12.zip
link. - Setelah penundaan singkat, browser Anda akan meminta Anda untuk menyimpan file ini. Lanjutkan dan simpan file.
Setelah pengunduhan, batalkan pengarsipan file ini. Anda harus mengamati jexcelapi
direktori home di dalam jexcelapi_2_6_12
direktori.
Mendemonstrasikan pustaka JExcelAPI
T: Apakah perpustakaan JExcelAPI berisi demo?
J:jexcelapi
Direktori beranda JExcelAPI berisi jxl.jar
file yang berisi demo untuk membaca, menulis, dan menyalin spreadsheet.
Demo baca membaca spreadsheet yang ada, mengonversinya menjadi format comma-separated value (CSV) atau XML melalui opsi baris perintah -csv
atau -xml
. Perhatikan contoh berikut:
java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls
Contoh ini membaca budget.xls
dan mengeluarkan kontennya dalam format CSV dan XML ke keluaran standar. Ketika tidak ada -csv
atau -xml
ditentukan, -csv
diasumsikan.
Demo tulis membuat contoh spreadsheet yang menyertakan rumus, batas, gambar, dan lainnya. Spreadsheet ini dibuat dengan menentukan -write
opsi baris perintah, seperti yang ditunjukkan di bawah ini:
java -jar jxl.jar -write sample.xls
Gambar 1 menunjukkan bagian dari sample.xls
spreadsheet yang dihasilkan .
Gambar 1. Saya menggunakan LibreOffice Calc untuk mengakses spreadsheet sample.xls
Salinan demo menyalin contoh spreadsheet jxlrwtest.xls
, yang disimpan di direktori yang sama dengan jxl.jar
, ke spreadsheet baru. Dalam spreadsheet yang dihasilkan, lembar pertama (asli) tidak berubah sedangkan lembar kedua (dimodifikasi) berisi nilai yang dimodifikasi.
Demo ini dibuat dengan menentukan -rw
opsi baris perintah diikuti oleh jxlrwtest.xls
dan nama spreadsheet keluaran. Pertimbangkan baris perintah berikut:
java -jar jxl.jar -rw jxlrwtest.xls copy.xls
Baris perintah ini menyalin jxlrwtest.xls
ke copy.xls
. Gambar 2 menunjukkan lembar kedua (dimodifikasi) di LibreOffice Calc.
Gambar 2. Klik tab asli dan yang dimodifikasi untuk melihat sheet asli dan yang dimodifikasi
Termasuk JExcelAPI untuk kompilasi dan eksekusi
T: Bagaimana cara menyertakan JExcelAPI saat menyusun kode sumber dan menjalankan aplikasi?
J: Untuk menyertakan JExcelAPI saat mengompilasi kode sumber dan menjalankan aplikasi, lakukan salah satu hal berikut:
- Tambahkan file
jexcelapi
direktori homejxl.jar
keCLASSPATH
variabel lingkungan Anda . - Sertakan
jxl.jar
melalui opsi baris perintahjavac
danjava
program-cp
.
Pemrograman dengan JExcelAPI
T: Bagaimana cara membuat program Java yang memanfaatkan JExcelAPI?
J: Direktori jexcelapi
home menyertakan tutorial.html
file yang menyajikan tutorial dasar tentang pemrograman dengan JExcelAPI. Tutorial menunjukkan kepada Anda cara membaca, menulis, dan menyalin spreadsheet. Tutorial juga membahas pemformatan.
jexcelapi
juga mencakup docs
subdirektori, yang menyediakan akses ke dokumentasi API ekstensif. Arahkan browser Web Anda ke index.html
file direktori ini dan Anda dapat menjelajahi tipe dalam empat paket terdokumentasi perpustakaan ini:
jxl
: jenis paket utamajxl.demo
: jenis untuk berbagai demojxl.format
: jenis yang terkait dengan pemformatanjxl.write
: jenis untuk menulis ke spreadsheet
Note that this list isn't exhaustive. Additional packages such as jxl.read
are present but are not documented. To learn about additional packages, execute jar tvf jxl.jar
and examine the package information in the resulting JAR listing.
To help you get started with JExcelAPI, I've created a simple JExcelAPIDemo
application that demonstrates creating a new spreadsheet that is saved in output.xls
and then reading and outputting the contents of this spreadsheet. Check out Listing 1.
Listing 1. Writing and reading a simple spreadsheet
import java.io.File; import java.io.IOException; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; import jxl.write.Label; import jxl.write.Number; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; import jxl.write.WriteException; public class JExcelAPIDemo { public static void main(String[] args) throws BiffException, IOException, WriteException { WritableWorkbook wworkbook; wworkbook = Workbook.createWorkbook(new File("output.xls")); WritableSheet wsheet = wworkbook.createSheet("First Sheet", 0); Label label = new Label(0, 2, "A label record"); wsheet.addCell(label); Number number = new Number(3, 4, 3.1459); wsheet.addCell(number); wworkbook.write(); wworkbook.close(); Workbook workbook = Workbook.getWorkbook(new File("output.xls")); Sheet sheet = workbook.getSheet(0); Cell cell1 = sheet.getCell(0, 2); System.out.println(cell1.getContents()); Cell cell2 = sheet.getCell(3, 4); System.out.println(cell2.getContents()); workbook.close(); } }
Listing 1 first creates a writable workbook by invoking one of Workbook
's factory methods. A writable sheet is then created for this workbook, and then a label and a number are added as the sheet's two cell values. The workbook is then written and closed.
Listing 1 continues by getting a workbook associated with output.xls
and reading its contents. The getSheet()
method provides access to the first sheet within this workbook. Its getCell()
method is called to access the two cells, whose contents are then output.
Assuming that jxl.jar
is located in the current directory, execute the following command to compile Listing 1:
javac -cp jxl.jar JExcelAPIDemo.java
Assuming success, execute the following command to run JExcelAPIDemo
:
java -cp jxl.jar;. JExcelAPIDemo
You should observe the following output:
A label record 3.146
Figure 3 shows you output.xls
in a LibreOffice context.
Figure 3. The solitary sheet displays two cell values
What's next?
Lain kali, saya menyajikan sekumpulan teka-teki yang membahas evolusi perpustakaan Java. Pemecah teka-teki ini fokus pada kompatibilitas kode sumber dan biner antara program klien dan pustaka yang digunakan program ini.
unduh Unduh sumber Dapatkan kode sumber untuk aplikasi posting ini. Dibuat oleh Jeff Friesen untuk JavaWorldPerangkat lunak berikut digunakan untuk mengembangkan kode pos:
- 64-bit JDK 7u6
- JExcelAPI 2.6.12
Kode pos telah diuji pada platform berikut:
- JVM pada Windows 7 SP1 64-bit
Cerita, "Membaca dan menulis spreadsheet Excel" ini awalnya diterbitkan oleh JavaWorld.