資料來自 通義千問🎈
依賴包
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.2</version>
</dependency>
v5.2.2。
建立Excel
xlsx 格式。
簡單版
建立一個包含資料的 Excel 檔案
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Date;
public class ExcelWriter {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
FileOutputStream fileOut = new FileOutputStream("output.xlsx")) { // 建立一個輸出流
// 建立一個工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 建立一行
Row row = sheet.createRow(0);
// 建立單元格並填充資料
Cell cell = row.createCell(0);
cell.setCellValue("Hello World!");
cell = row.createCell(1);
cell.setCellValue(new Date());
// 寫入檔案
workbook.write(fileOut);
System.out.println("Excel file created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
進階版
建立更復雜的 Excel 檔案
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelComplexWriter {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
FileOutputStream fileOut = new FileOutputStream("output_complex.xlsx")) { // 建立一個輸出流
// 建立一個工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 建立一行
Row row = sheet.createRow(0);
// 建立單元格並填充資料
Cell cell = row.createCell(0);
cell.setCellValue("Name");
cell = row.createCell(1);
cell.setCellValue("Age");
// 建立第二個行
row = sheet.createRow(1);
cell = row.createCell(0);
cell.setCellValue("John Doe");
cell = row.createCell(1);
cell.setCellValue(30);
// 設定樣式
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
// 應用樣式
cell = row.createCell(2);
cell.setCellValue("New York");
cell.setCellStyle(style);
// 寫入檔案
workbook.write(fileOut);
System.out.println("Excel file created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
一些Excel的設定
列寬、單元格自動換行。
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.FileOutputStream;
import java.io.IOException;
public class ExcelWriterWithWidthAndWrap {
public static void main(String[] args) {
try (Workbook workbook = new XSSFWorkbook(); // 建立一個新的 xlsx 工作簿
FileOutputStream fileOut = new FileOutputStream("output_with_width_and_wrap.xlsx")) { // 建立一個輸出流
// 建立一個工作表
Sheet sheet = workbook.createSheet("Sheet1");
// 設定列寬
sheet.setColumnWidth(0, 20 * 256); // 設定第一列的寬度為 20 個字元
sheet.setColumnWidth(1, 40 * 256); // 設定第二列的寬度為 40 個字元
// 建立一行
Row row = sheet.createRow(0);
// 建立單元格並填充資料
Cell cell = row.createCell(0);
cell.setCellValue("Hello World!");
cell = row.createCell(1);
cell.setCellValue("This is a very long sentence that needs to be wrapped automatically.");
// 設定樣式
CellStyle style = workbook.createCellStyle();
style.setFillForegroundColor(IndexedColors.YELLOW.getIndex());
style.setFillPattern(FillPatternType.SOLID_FOREGROUND);
style.setWrapText(true); // 設定自動換行
// 應用樣式
cell.setCellStyle(style);
// 寫入檔案
workbook.write(fileOut);
System.out.println("Excel file created successfully.");
} catch (IOException e) {
e.printStackTrace();
}
}
}
Apache POI 官網
https://poi.apache.org/apidocs/index.html
5.0.x 的文件:
https://poi.apache.org/apidocs/5.0/
---END---
本文連結:
https://www.cnblogs.com/luo630/p/18387024
ben釋出於部落格園
ben釋出於部落格園