Membaca dan menulis spreadsheet Excel

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:

  1. Arahkan browser Anda ke situs SourceForge JExcelAPI.
  2. Klik jexcelapilink tersebut.
  3. Pada halaman yang dihasilkan, klik salah satu link folder. Misalnya, saya mengklik 2.6.12link.
  4. Pada halaman yang dihasilkan, klik nama file arsip distribusi. Misalnya, saya mengklik jexcelapi_2_6_12.ziplink.
  5. 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 jexcelapidirektori home di dalam jexcelapi_2_6_12direktori.

Mendemonstrasikan pustaka JExcelAPI

T: Apakah perpustakaan JExcelAPI berisi demo?

J:jexcelapi Direktori beranda JExcelAPI berisi jxl.jarfile 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 -csvatau -xml. Perhatikan contoh berikut:

java -jar jxl.jar -csv budget.xls java -jar jxl.jar -xml budget.xls

Contoh ini membaca budget.xlsdan mengeluarkan kontennya dalam format CSV dan XML ke keluaran standar. Ketika tidak ada -csvatau -xmlditentukan, -csvdiasumsikan.

Demo tulis membuat contoh spreadsheet yang menyertakan rumus, batas, gambar, dan lainnya. Spreadsheet ini dibuat dengan menentukan -writeopsi baris perintah, seperti yang ditunjukkan di bawah ini:

java -jar jxl.jar -write sample.xls

Gambar 1 menunjukkan bagian dari sample.xlsspreadsheet 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 -rwopsi baris perintah diikuti oleh jxlrwtest.xlsdan nama spreadsheet keluaran. Pertimbangkan baris perintah berikut:

java -jar jxl.jar -rw jxlrwtest.xls copy.xls

Baris perintah ini menyalin jxlrwtest.xlske 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 jexcelapidirektori home jxl.jarke CLASSPATHvariabel lingkungan Anda .
  • Sertakan jxl.jarmelalui opsi baris perintah javacdan javaprogram -cp.

Pemrograman dengan JExcelAPI

T: Bagaimana cara membuat program Java yang memanfaatkan JExcelAPI?

J: Direktori jexcelapihome menyertakan tutorial.htmlfile yang menyajikan tutorial dasar tentang pemrograman dengan JExcelAPI. Tutorial menunjukkan kepada Anda cara membaca, menulis, dan menyalin spreadsheet. Tutorial juga membahas pemformatan.

jexcelapijuga mencakup docssubdirektori, yang menyediakan akses ke dokumentasi API ekstensif. Arahkan browser Web Anda ke index.htmlfile direktori ini dan Anda dapat menjelajahi tipe dalam empat paket terdokumentasi perpustakaan ini:

  • jxl: jenis paket utama
  • jxl.demo: jenis untuk berbagai demo
  • jxl.format: jenis yang terkait dengan pemformatan
  • jxl.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 JavaWorld

Perangkat 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.