Bekerja dengan Manajemen Spreadsheet

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()); // Sheet1

Memuat 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());       // 1200

Menetapkan 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 automatically

Tips 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) daripada cells.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 menghindari IndexOutOfBoundsException.
  • Berikan nama sheet Anda secara eksplisit dengan setName() setelah add() 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

MasalahPenyebabPerbaikan
WorkbookLoadException pada new Workbook(fileName)Jalur file tidak tepat atau file terkunciVerifikasi bahwa jalur ada dan dapat dibaca; tutup aplikasi lain yang memegang file tersebut
get(index) melempar IndexOutOfBoundsExceptionIndeks lembar melebihi getCount() - 1Periksa sheets.getCount() sebelum mengakses; gunakan add() untuk membuat lembar baru
Sel formula mengembalikan getValue() kosongFormula tidak dihitung otomatis di memoriSimpan buku kerja dan muat ulang untuk memperoleh hasil formula
File output rusak setelah save()Ekstensi file salahPastikan 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 value

API Reference Ringkasan

Kelas / MetodeDeskripsi
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)”)
LoadOptionsKonfigurasi untuk memuat workbook
SaveFormatEnum konstanta format (format diambil dari ekstensi file; tidak diteruskan ke save())

Lihat Juga

 Bahasa Indonesia