Memisahkan workbook Excel besar menjadi lembaran individual adalah kebutuhan umum ketika Anda ingin memproses atau mendistribusikan data per lembar kerja. Kemampuan untuk memisahkan Workbook Excel di Java memungkinkan pengembang mengisolasi setiap lembar untuk penanganan atau pelaporan terpisah. Conholdate.Total for Java menyediakan SDK yang kuat yang membuat tugas ini sederhana dalam aplikasi Java. Dalam panduan ini Anda akan melihat contoh kode lengkap, mempelajari cara menyiapkan pustaka, memahami pertimbangan kinerja, dan mendapatkan tip praktis untuk menangani file XLSX besar secara efisien.
Contoh Kerja Penuh untuk Membagi Workbook Excel di Java
Contoh ini menunjukkan cara membagi buku kerja Excel menjadi file terpisah menggunakan Conholdate.Total.
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import com.aspose.cells.SaveFormat;
import java.io.File;
public class ExcelSplitter {
public static void main(String[] args) {
String sourceFile = "input.xlsx";
String outputDir = "splitted";
File dir = new File(outputDir);
if (!dir.exists()) {
dir.mkdirs();
}
try {
Workbook sourceWorkbook = new Workbook(sourceFile);
int sheetCount = sourceWorkbook.getWorksheets().getCount();
for (int i = 0; i < sheetCount; i++) {
Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
splitWorkbook.getWorksheets().removeAt(0);
}
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
splitWorkbook.dispose();
}
sourceWorkbook.dispose();
} catch (Exception e) {
System.err.println("Error during splitting: " + e.getMessage());
e.printStackTrace();
}
}
}
Catatan: Contoh kode ini menunjukkan fungsionalitas inti. Sebelum menggunakannya dalam proyek Anda, pastikan untuk memperbarui semua jalur file dan nilai konfigurasi agar sesuai dengan lingkungan Anda yang sebenarnya, verifikasi bahwa semua dependensi yang diperlukan telah terpasang dengan benar, dan uji secara menyeluruh di lingkungan pengembangan Anda. Jika Anda menemukan masalah, silakan merujuk ke dokumentasi resmi atau hubungi tim dukungan untuk bantuan.
Kelas Kunci yang Digunakan
Potongan kode ini bergantung pada tiga kelas inti dari perpustakaan Aspose.Cells yang disertakan dengan Conholdate.Total:
Workbook- mewakili seluruh file Excel dan menyediakan metode untuk memuat, menyimpan, dan memanipulasi workbook. Lihat referensi API kelas Workbook.Worksheet- memberikan akses ke lembar individu di dalam workbook.SaveFormat- enumerasi yang mendefinisikan format output;SaveFormat.XLSXmenulis file dalam kontainer XLSX modern.
Class‑class ini ringan, tetapi mereka mengalokasikan sumber daya native, sehingga membuangnya dengan cepat (seperti yang ditunjukkan) sangat penting untuk Manajemen Memori untuk File Excel Besar.
Membongkar Pembagian Workbook Excel di Java
Program ini mengikuti urutan yang jelas yang dapat Anda sesuaikan dengan alur kerja Excel Split Java apa pun.
Penjelasan Langkah‑per‑Langkah
- Muat workbook sumber -
new Workbook(sourceFile)membaca input XLSX.
Workbook sourceWorkbook = new Workbook(sourceFile);
- Buat direktori output - Memeriksa apakah folder target ada dan membuatnya jika diperlukan.
File dir = new File(outputDir);
if (!dir.exists()) {
dir.mkdirs();
}
- Iterasi lembar kerja -
sourceWorkbook.getWorksheets().getCount()memberikan jumlah lembar kerja, dan loop memproses setiap lembar.
for (int i = 0; i < sheetCount; i++) {
Worksheet sheet = sourceWorkbook.getWorksheets().get(i);
}
- Salin lembar kerja saat ini ke buku kerja baru -
addCopy(sheet)menduplikasi lembar kerja, kemudian lembar kosong default dihapus jika ada.
Workbook splitWorkbook = new Workbook();
splitWorkbook.getWorksheets().addCopy(sheet);
if (splitWorkbook.getWorksheets().getCount() > 1) {
splitWorkbook.getWorksheets().removeAt(0);
}
- Simpan workbook yang dipisah - Menghasilkan nama file yang aman dan menulis lembar sebagai file XLSX.
String safeName = sheet.getName().replaceAll("[\\\\/:*?\"<>|]", "_");
String outPath = outputDir + File.separator + safeName + ".xlsx";
splitWorkbook.save(outPath, SaveFormat.XLSX);
- Dispose resources - Memanggil
dispose()pada kedua workbook sementara dan sumber untuk membebaskan memori dan menghindari kebocoran native.
Seluruh alur ini adalah contoh praktis Kode Java untuk Memisahkan Lembar Excel yang dapat disematkan dalam pipeline pemrosesan data yang lebih besar.
Prasyarat dan Penyiapan - Memulai dengan Conholdate.Total
Sebelum Anda dapat mengompilasi dan menjalankan contoh, pastikan lingkungan pengembangan Anda memenuhi prasyarat berikut.
Konfigurasi Maven
Tambahkan repositori Maven Conholdate dan dependensi SDK ke pom.xml Anda:
<repositories>
<repository>
<id>conholdate-repo</id>
<name>Conholdate Maven Repository</name>
<url>https://repository.conholdate.com/repo/</url>
</repository>
</repositories>
<dependency>
<groupId>com.conholdate</groupId>
<artifactId>conholdate-total</artifactId>
<version>24.9</version>
<type>pom</type>
</dependency>
Unduh paket SDK terbaru dari halaman unduhan resmi: Conholdate.Total for Java download. Perpustakaan memerlukan Java 8 atau yang lebih baru dan berjalan pada JVM standar apa pun.
Konfigurasi Lisensi
Lisensi yang valid diperlukan untuk penggunaan produksi. Anda dapat memperoleh lisensi sementara untuk pengujian dari halaman lisensi sementara. Untuk proyek jangka panjang, tinjau opsi harga di halaman harga. Setelah Anda memiliki file lisensi, atur di kode startup aplikasi Anda (tidak ditampilkan di sini) seperti yang dijelaskan dalam dokumentasi.
Tips Praktis untuk Membagi Excel secara Efisien
Bekerja dengan buku kerja besar membutuhkan penanganan sumber daya yang hati-hati. Rekomendasi berikut membantu Anda menjaga proses tetap cepat dan andal.
Rekomendasi Manajemen Memori
- Buang setiap workbook sementara setelah menyimpan untuk melepaskan sumber daya native dan menjaga penggunaan memori tetap rendah.
- Gunakan kembali objek bila memungkinkan - membuat satu instance
Workbookuntuk sumber dan menggunakan kembali objekFileyang sama untuk direktori output mengurangi tekanan pada garbage‑collector. - Pertimbangkan mode streaming jika versi Conholdate.Total Anda mendukungnya; streaming membaca baris sesuai permintaan alih-alih memuat seluruh workbook ke memori.
Jebakan Umum dan Cara Menghindarinya
| Gejala | Penyebab Kemungkinan | Solusi |
|---|---|---|
java.lang.OutOfMemoryError | Menyimpan setiap workbook yang dibagi di memori | Pastikan splitWorkbook.dispose() dipanggil di dalam loop, seperti yang ditunjukkan. |
| Illegal file name error | Nama lembar mengandung karakter seperti `\ / : * ? " < > | ` |
| Missing output files | Path direktori output tidak benar atau tidak dapat ditulisi | Verifikasi bahwa outputDir mengarah ke lokasi dengan izin menulis. |
Peningkat Kinerja
- Catat kemajuan - mencetak nama sheet sebelum menyimpan membantu Anda mengidentifikasi titik kegagalan dalam batch besar.
- Tingkatkan heap JVM - untuk workbook yang sangat besar, jalankan JVM dengan
-Xmx2g(atau lebih tinggi) untuk memberikan proses lebih banyak memori. - Pemrosesan paralel - jika workbook tidak saling bergantung, Anda dapat membagi pekerjaan ke beberapa thread, tetapi ingat bahwa pustaka native di bawahnya tidak selalu thread‑safe; uji secara menyeluruh.
Dengan mengikuti tips ini, Anda dapat secara efisien memecah Workbook Excel di Java bahkan ketika menangani ribuan lembar atau workbook yang berukuran ratusan megabyte.
Kesimpulan
Memisahkan workbook Excel menjadi file XLSX individual dengan Conholdate.Total for Java adalah teknik sederhana namun kuat bagi pengembang Java yang membutuhkan akses granular ke data lembar kerja. Kode yang disediakan menunjukkan alur kerja lengkap, mulai dari memuat workbook sumber hingga membuang sumber daya setelah setiap lembar disimpan. Menggunakan pendekatan ini untuk memisahkan Excel Workbook di Java memberi Anda kontrol detail atas setiap lembar dan mudah diintegrasikan ke dalam pipeline pemrosesan data yang lebih besar. Ingatlah untuk memperoleh lisensi yang tepat untuk penggunaan produksi; Anda dapat menjelajahi opsi harga di halaman harga atau meminta lisensi sementara dari halaman lisensi sementara. Dengan SDK terpasang dan rekomendasi praktik terbaik diterapkan, Anda siap menangani bahkan skenario Excel Split Java yang paling menuntut.
FAQ
Bagaimana cara memecah Excel Workbook di Java menggunakan Conholdate.Total?
Gunakan kelas ExcelSplitter yang ditampilkan dalam contoh lengkap. Kelas ini memuat workbook sumber, mengiterasi setiap lembar kerja, membuat workbook baru per lembar, dan menyimpannya sebagai file XLSX terpisah. Metode ini juga berfungsi ketika Anda perlu memecah file XLSX menggunakan Java untuk ukuran workbook apa pun.
Apakah SDK kompatibel dengan semua versi Java?
SDK mendukung Java 8 dan yang lebih baru. Pastikan proyek Anda menargetkan JDK yang kompatibel.
Apakah saya perlu mengatur lisensi sebelum menjalankan kode?
Lisensi diperlukan untuk penyebaran produksi. Anda dapat memperoleh lisensi sementara untuk pengujian dari halaman lisensi sementara dan meninjau harga lengkap di halaman harga.
Bagaimana jika buku kerja saya berisi ribuan lembar?
Proses buku kerja dalam batch, buang setiap buku kerja sementara dengan cepat, dan pertimbangkan untuk meningkatkan ukuran heap JVM jika diperlukan. Mencatat nama setiap lembar membantu Anda mengidentifikasi lembar yang bermasalah dengan cepat.
