Các thư viện java code xuất file excel nhanh nhất với 1 triệu dòng
Khi làm việc với tệp Excel có dung lượng lớn (như 1 triệu dòng), việc chọn thư viện phù hợp có thể ảnh hưởng rất lớn đến hiệu suất. Dưới đây là một số thư viện Java mạnh mẽ để xuất file Excel nhanh nhất:
🔥 1. Apache POI (SXSSF - Streaming API)#
Ưu điểm:
Hỗ trợ xử lý dữ liệu lớn nhờ cơ chế streaming (SXSSF -Streaming XSSF).Dễ sử dụng, phổ biến trong cộng đồng.
Hỗ trợ định dạng
.xlsx.
Nhược điểm:
Chỉ hỗ trợ ghi (không hỗ trợ đọc khi dùng SXSSF).- Không hỗ trợ các tính năng phức tạp như merge cells hoặc formula trong chế độ streaming.
🔹 Cách sử dụng SXSSF để ghi nhanh 1 triệu dòng:
`
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import java.io.FileOutputStream;
public class ExcelExporter { public static void main(String[] args) throws Exception { SXSSFWorkbook workbook = new SXSSFWorkbook(100); // Giữ 100 dòng trong bộ nhớ, còn lại sẽ được flush ra file Sheet sheet = workbook.createSheet("Data");
for (int i = 0; i < 1_000_000; i++) {
Row row = sheet.createRow(i);
Cell cell = row.createCell(0);
cell.setCellValue("Row " + i);
}
try (FileOutputStream outputStream = new FileOutputStream("large_excel.xlsx")) {
workbook.write(outputStream);
}
workbook.dispose(); // Giải phóng bộ nhớ
}
}
👉 **Tốc độ nhanh hơn nhiều so vớiXSSFWorkbook` do không giữ toàn bộ dữ liệu trong RAM.**
🚀 2. EasyExcel (Alibaba)#
Ưu điểm:
Cực kỳ nhanh vì dùng reflection và bytecode để ghi file.Không tốn nhiều bộ nhớ (không giữ toàn bộ dữ liệu trong RAM).
Hỗ trợ ghi và đọc file
.xlsx.
Nhược điểm:
Ít tùy chỉnh hơn Apache POI.
🔹 Cách sử dụng EasyExcel để ghi nhanh 1 triệu dòng:
`
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class EasyExcelExporter {
public static void main(String[] args) {
String fileName = "large_excel_easy.xlsx";
List
for (int i = 0; i < 1_000_000; i++) {
dataList.add(new DataModel("Row " + i));
}
EasyExcel.write(fileName, DataModel.class).sheet("Data").doWrite(dataList);
}
public static class DataModel {
private String name;
public DataModel(String name) { this.name = name; }
public String getName() { return name; }
}
} ` 👉 Tốc độ nhanh hơn Apache POI SXSSF và ít tốn RAM hơn.
⚡ 3. JExcelAPI (Dành cho .xls, nhưng không khuyến khích)#
Hỗ trợ
.xlsnhưng chỉ cho file nhỏ (< 65,536 dòng).Chậm hơn
SXSSFvàEasyExcel.
🎯 Nên chọn thư viện nào?#
✅ Nếu bạn cần tốc độ nhanh nhất → EasyExcel.
✅ Nếu bạn cần linh hoạt, hỗ trợ nhiều tùy chỉnh → Apache POI (SXSSF).
Bạn đang làm dự án gì cần xuất file Excel lớn vậy? 😊