Class Workbook
java.lang.Object
io.leandev.appfuse.workbook.Workbook
- All Implemented Interfaces:
AutoCloseable
Excel 活頁簿(.xlsx)
框架的 Excel 讀寫入口,封裝底層 Apache POI 的 XSSFWorkbook,
不讓 POI 型別洩漏到公開 API(與 CsvReader 同隔離策略)。
本版本支援 Office Open XML 格式(.xlsx),採記憶體模式——整份活頁簿常駐記憶體。
巨量資料匯出(數十萬列以上)請留意記憶體用量。
建立並寫出
try (Workbook workbook = Workbook.create();
OutputStream os = new FileOutputStream("report.xlsx")) {
Worksheet sheet = workbook.createSheet("Products");
Row header = sheet.createRow();
header.createCell().setValue("Name");
header.createCell().setValue("Price");
Row row = sheet.createRow();
row.createCell().setValue("Rose Bouquet");
row.createCell().setValue(new BigDecimal("1280"));
workbook.autoSizeColumns();
workbook.write(os);
}
開啟並讀取
try (InputStream is = new FileInputStream("products.xlsx");
Workbook workbook = Workbook.open(is)) {
Worksheet sheet = workbook.getSheetAt(0);
WorkbookReader reader = new WorkbookReader(sheet);
reader.readHeaders();
for (WorkbookRecord record = reader.read(); record != null; record = reader.read()) {
String name = record.getAsString("Name");
BigDecimal price = record.getAsBigDecimal("Price");
}
}
- Since:
- 4.0.0
-
Method Summary
Modifier and TypeMethodDescriptionvoid對所有工作表自動調整欄寬voidclose()static Workbookcreate()建立一個空白活頁簿建立一個可重用的儲存格樣式建立工作表(名稱由 POI 自動產生)createSheet(String name) 以指定名稱建立工作表取得指定名稱的工作表getSheetAt(int index) 取得指定索引的工作表int取得工作表數量static Workbookopen(InputStream inputStream) 從輸入串流開啟既有活頁簿voidwrite(OutputStream outputStream) 將活頁簿寫出到輸出串流
-
Method Details
-
create
-
open
從輸入串流開啟既有活頁簿- Parameters:
inputStream-.xlsx輸入串流- Returns:
- 載入的活頁簿
- Throws:
IOException- 讀取失敗
-
createSheet
-
createSheet
-
getSheetAt
取得指定索引的工作表- Parameters:
index- 工作表索引(0 起算)- Returns:
- 工作表,若不存在則回傳
null
-
getSheet
-
numberOfSheets
public int numberOfSheets()取得工作表數量- Returns:
- 工作表數量
-
autoSizeColumns
public void autoSizeColumns()對所有工作表自動調整欄寬 -
createCellStyle
建立一個可重用的儲存格樣式
大量套用相同外觀時,建立一次再以
Cell.setStyle(CellStyle)套用到多個儲存格, 避免逐格產生新樣式而觸及 Excel 的樣式數量上限。- Returns:
- 新儲存格樣式
-
write
將活頁簿寫出到輸出串流- Parameters:
outputStream- 輸出串流- Throws:
IOException- 寫入失敗
-
close
- Specified by:
closein interfaceAutoCloseable- Throws:
IOException
-