Java匯出excel檔案簡單實現
阿新 • • 發佈:2019-01-03
慣例: 引用度孃的介紹
Apache POI [1] 是用Java編寫的免費開源的跨平臺的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。POI為“Poor Obfuscation Implementation”的首字母縮寫,意為“可憐的模糊實現”。
1、匯入maven
<!-- https://mvnrepository.com/artifact/org.apache.poi/poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
2、工具方法
/**
* @param sheetName 表名
* @param header 表頭資料
* @param body 主幹資料 body.get(i) 對應 i+1行的所有資料
*/
public static void generateExcel(String sheetName, List<String> header, List<List<String>> body, OutputStream out) {
//新建excel報表
HSSFWorkbook excel = new HSSFWorkbook();
//新增一個sheet
HSSFSheet hssfSheet = excel.createSheet(sheetName);
//往excel表格建立一行,excel的行號是從0開始的
// 設定表頭
HSSFRow firstRow = hssfSheet.createRow(0);
for (int columnNum = 0; columnNum < header.size(); columnNum ++) {
//建立單元格
HSSFCell hssfCell = firstRow.createCell(columnNum);
//設定單元格的值
hssfCell.setCellValue(header.size() < columnNum ? "-" : header.get(columnNum));
}
// 設定主體資料
for (int rowNum = 0; rowNum < body.size(); rowNum ++) {
//往excel表格建立一行,excel的行號是從0開始的
HSSFRow hssfRow = hssfSheet.createRow(rowNum + 1);
List<String> data = body.get(rowNum);
for (int columnNum = 0; columnNum < data.size(); columnNum ++) {
//建立單元格
HSSFCell hssfCell = hssfRow.createCell(columnNum);
//設定單元格的值
hssfCell.setCellValue(data.size() < columnNum ? "-" : data.get(columnNum));
}
}
try {
excel.write(out);
} catch (IOException e) {
e.printStackTrace();
}
}
3、程式碼測試
public static void main(String[] args) {
List<String> header = new ArrayList<>(); // 第一行資料
header.add("編號");
header.add("姓名");
header.add("性別");
header.add("手機號");
List<List<String>> body = new ArrayList<>();
List<String> data1 = new ArrayList<>(); // 第二行資料
data1.add("1001");
data1.add("張三");
data1.add("男");
data1.add("12345678900");
List<String> data2 = new ArrayList<>(); // 第三行資料
data2.add("1002");
data2.add("李四");
data2.add("男");
data2.add("12300000000");
body.add(data1);
body.add(data2);
try (
OutputStream out = new FileOutputStream("F:/test.xls") // 輸出目的地
) {
POIUtil.generateExcel("sheetName", header, body, out);
} catch (Exception e) {
e.printStackTrace();
}
}