import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ExcelExporter {
public static void exportToExcel(String[] headers, Object[][] data, String filename) throws IOException {
Workbook workbook = new XSSFWorkbook();
Sheet sheet = workbook.createSheet("Sheet 1");
// 创建表头
Row headerRow = sheet.createRow(0);
for (int i = 0; i < headers.length; i++) {
Cell cell = headerRow.createCell(i);
cell.setCellValue(headers[i]);
}
// 填充数据
int rowNum = 1;
for (Object[] rowData : data) {
Row row = sheet.createRow(rowNum++);
for (int i = 0; i < rowData.length; i++) {
Cell cell = row.createCell(i);
if (rowData[i] instanceof String) {
cell.setCellValue((String) rowData[i]);
} else if (rowData[i] instanceof Integer) {
cell.setCellValue((Integer) rowData[i]);
} else if (rowData[i] instanceof Double) {
cell.setCellValue((Double) rowData[i]);
}
}
}
// 保存Excel文件
FileOutputStream fileOut = new FileOutputStream(filename);
workbook.write(fileOut);
fileOut.close();
// 压缩Excel文件
String zipFilename = filename + ".zip";
FileOutputStream zipFileOut = new FileOutputStream(zipFilename);
ZipOutputStream zipOut = new ZipOutputStream(zipFileOut);
FileInputStream excelFileIn = new FileInputStream(filename);
zipOut.putNextEntry(new ZipEntry(filename));
byte[] buffer = new byte[1024];
int length;
while ((length = excelFileIn.read(buffer)) > 0) {
zipOut.write(buffer, 0, length);
}
excelFileIn.close();
zipOut.closeEntry();
zipOut.close();
}
public static void main(String[] args) {
// 示例用法
String[] headers = {"Name", "Age", "Salary"};
Object[][] data = {
{"John Doe", 30, 5000.0},
{"Jane Smith", 25, 4000.0},
{"Bob Johnson", 35, 6000.0}
};
try {
exportToExcel(headers, data, "data.xlsx");
System.out.println("Excel exported and compressed successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java导出Excel并导出压缩
最新推荐文章于 2024-08-04 11:07:52 发布