Bekerja dengan Manajemen Spreadsheet
Bekerja dengan Manajemen Spreadsheet
Panduan ini menunjukkan cara membuat, memuat, memodifikasi, dan menyimpan workbook Excel menggunakan Aspose.Cells FOSS untuk Java. Anda akan belajar cara bekerja dengan kelas Workbook, WorksheetCollection, Worksheet, Cells, dan Cell untuk manajemen spreadsheet end-to-end.
Membuat Workbook Baru
Gunakan konstruktor tanpa argumen untuk membuat workbook kosong. Sebuah lembar kerja kosong tunggal bernama Sheet1 ditambahkan secara otomatis.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
System.out.println("Sheet name: " + sheet.getName()); // Sheet1Memuat Workbook dari File
Berikan jalur file ke konstruktor Workbook(fileName) untuk membuka file .xlsx atau .ods yang sudah ada. Gunakan Workbook(fileName, options) untuk menyediakan LoadOptions ketika Anda perlu mengontrol deteksi format atau penanganan kata sandi.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.LoadOptions;
// Simple load
Workbook workbook = new Workbook("data/report.xlsx");
// Load with explicit options
LoadOptions opts = new LoadOptions();
Workbook workbookWithOpts = new Workbook("data/report.xlsx", opts);Memuat Workbook dari Stream
Workbook(stream) dan Workbook(stream, options) menerima sembarang java.io.InputStream. Ini berguna ketika file berasal dari sumber jaringan, BLOB basis data, atau array byte dalam memori.
import com.aspose.cells.foss.Workbook;
import java.io.FileInputStream;
import java.io.InputStream;
try (InputStream is = new FileInputStream("data/template.xlsx")) {
Workbook workbook = new Workbook(is);
System.out.println("Worksheets: " + workbook.getWorksheets().getCount());
}Mengakses dan Mengelola Lembar Kerja
Workbook.getWorksheets() mengembalikan WorksheetCollection. Ambil lembar kerja berdasarkan indeks atau nama, iterasi semua lembar, dan tambahkan atau hapus lembar sesuai kebutuhan.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.WorksheetCollection;
import com.aspose.cells.foss.Worksheet;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
// Access by index
Worksheet first = sheets.get(0);
System.out.println(first.getName()); // Sheet1
// Add a named sheet
int idx = sheets.add("Summary");
Worksheet summary = sheets.get(idx);
summary.setName("Summary");
// Iterate all sheets
for (Worksheet ws : sheets) {
System.out.println("Sheet: " + ws.getName());
}
// Remove a sheet by name
sheets.removeAt("Sheet1");
System.out.println("Remaining sheets: " + sheets.getCount());Membaca dan Menulis Nilai Sel
Navigasikan ke sel menggunakan Worksheet.getCells(), yang mengembalikan koleksi Cells. Ambil Cell berdasarkan nama (mis. "A1") atau berdasarkan indeks baris/kolom berbasis nol. Gunakan putValue() untuk menulis nilai primitif dan getValue() / getStringValue() untuk membacanya kembali.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Worksheet;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Worksheet sheet = sheets.get(0);
Cells cells = sheet.getCells();
// Write values
cells.get("A1").putValue("Product");
cells.get("B1").putValue("Units Sold");
// Write by row/column index (0-based)
Cell a2 = cells.get(1, 0);
a2.putValue("Widget A");
Cell b2 = cells.get(1, 1);
b2.putValue(1200);
// Read back
System.out.println(a2.getStringValue()); // Widget A
System.out.println(b2.getValue()); // 1200Menetapkan Rumus Sel
Tetapkan string rumus ke sel melalui setFormula(). Aspose.Cells mengevaluasi rumus ketika buku kerja disimpan atau ketika perhitungan dipicu secara eksplisit.
import com.aspose.cells.foss.Workbook;
import com.aspose.cells.foss.Cells;
import com.aspose.cells.foss.Cell;
Workbook workbook = new Workbook();
WorksheetCollection sheets = workbook.getWorksheets();
Cells cells = sheets.get(0).getCells();
cells.get("A1").putValue(100);
cells.get("A2").putValue(200);
Cell a3 = cells.get("A3");
a3.setFormula("=SUM(A1:A2)");
System.out.println("Formula: " + a3.getFormula()); // =SUM(A1:A2)Menyimpan Buku Kerja
Gunakan Workbook.save(fileName) untuk menulis workbook ke disk. Format output ditentukan oleh ekstensi file; gunakan .xlsx untuk workbook Excel.
import com.aspose.cells.foss.Workbook;
Workbook workbook = new Workbook();
workbook.getWorksheets().get(0).getCells().get("A1").putValue("Hello");
// Save to file -- format inferred from .xlsx extension
workbook.save("output/result.xlsx");Melepaskan Sumber Daya
Workbook mengimplementasikan AutoCloseable. Gunakan blok try-with-resources untuk memastikan sumber daya internal workbook dilepaskan dengan cepat setelah penggunaan.
import com.aspose.cells.foss.Workbook;
try (Workbook workbook = new Workbook("data/large.xlsx")) {
workbook.save("output/large_modified.xlsx");
}
// workbook.close() called automaticallyTips dan Praktik Terbaik
- Selalu gunakan try-with-resources (
try (Workbook wb = new Workbook(...))) untuk file besar agar tidak menahan handle file tetap terbuka. - Lebih pilih
cells.get(row, column)daripadacells.get(cellName)dalam loop yang sering dieksekusi; overload integer menghindari parsing nama sel yang berulang. - Panggil
workbook.getWorksheets().getCount()sebelum mengakses sheet dengan indeks untuk menghindariIndexOutOfBoundsException. - Berikan nama sheet Anda secara eksplisit dengan
setName()setelahadd()sehingga kode downstream dapat mencarinya berdasarkan nama daripada indeks yang rapuh. - Jangan mengandalkan hasil formula segera setelah
setFormula(); simpan terlebih dahulu atau muat ulang jika Anda membutuhkan nilai yang dihitung dalam sesi yang sama.
Masalah Umum
| Masalah | Penyebab | Perbaikan |
|---|---|---|
WorkbookLoadException pada new Workbook(fileName) | Jalur file tidak tepat atau file terkunci | Verifikasi bahwa jalur ada dan dapat dibaca; tutup aplikasi lain yang memegang file tersebut |
get(index) melempar IndexOutOfBoundsException | Indeks lembar melebihi getCount() - 1 | Periksa sheets.getCount() sebelum mengakses; gunakan add() untuk membuat lembar baru |
Sel formula mengembalikan getValue() kosong | Formula tidak dihitung otomatis di memori | Simpan buku kerja dan muat ulang untuk memperoleh hasil formula |
File output rusak setelah save() | Ekstensi file salah | Pastikan nama file diakhiri dengan .xlsx; format diambil dari ekstensi |
FAQ
Bagaimana cara mengganti nama lembar kerja?
Ambil objek Worksheet berdasarkan indeks dari WorksheetCollection dan panggil setName(name) dengan nama tampilan baru:
workbook.getWorksheets().get(0).setName("Sales Data");Bagaimana cara memeriksa berapa banyak lembar yang dimiliki buku kerja?
Panggil getCount() pada WorksheetCollection yang dikembalikan oleh Workbook.getWorksheets() untuk mendapatkan total jumlah lembar kerja:
int count = workbook.getWorksheets().getCount();Apakah saya dapat menambahkan beberapa lembar sekaligus dalam satu panggilan?
Tidak. Panggil worksheets.add(sheetName) sekali per lembar. Setiap pemanggilan mengembalikan indeks lembar yang baru dibuat.
Bagaimana cara memeriksa tipe nilai sel?
Ambil Cell berdasarkan nama dan panggil getType(), yang mengembalikan nilai enum CellValueType:
Cell cell = cells.get("A1");
System.out.println(cell.getType()); // CellValueType enum valueAPI Reference Ringkasan
| Kelas / Metode | Deskripsi |
|---|---|
Workbook() | Membuat workbook kosong dengan satu lembar kosong |
Workbook(fileName) | Memuat workbook dari jalur file |
Workbook(stream) | Memuat buku kerja dari InputStream |
Workbook(fileName, options) | Memuat buku kerja dengan LoadOptions |
Workbook.getWorksheets() | Mengembalikan WorksheetCollection |
Workbook.save(fileName) | Menyimpan ke file (format diperkirakan dari ekstensi) |
Workbook.save(stream, format) | Menyimpan ke stream dengan SaveFormat eksplisit |
WorksheetCollection.get(index) | Mengembalikan sheet berdasarkan indeks berbasis nol |
WorksheetCollection.get(name) | Mengembalikan sheet berdasarkan nama |
WorksheetCollection.add(sheetName) | Menambahkan sheet bernama; mengembalikan indeksnya |
WorksheetCollection.getCount() | Jumlah lembar dalam buku kerja |
WorksheetCollection.removeAt(sheetName) | Menghapus lembar berdasarkan nama |
Worksheet.getCells() | Mengembalikan koleksi Cells untuk lembar ini |
Worksheet.getName() / setName() | Mendapatkan atau mengatur nama tab lembar |
Cells.get(cellName) | Mengembalikan Cell berdasarkan nama (mis. “A1”) |
Cells.get(row, column) | Mengembalikan Cell berdasarkan baris/kolom berbasis nol |
Cell.putValue(value) | Menulis nilai ke sel |
Cell.getValue() | Membaca nilai sel sebagai Object |
Cell.getStringValue() | Membaca nilai sel sebagai sebuah String |
Cell.setFormula(formula) | Mengatur string formula (mis. “=SUM(A1:A2)”) |
LoadOptions | Konfigurasi untuk memuat workbook |
SaveFormat | Enum konstanta format (format diambil dari ekstensi file; tidak diteruskan ke save()) |