由於要批量生成Excel,並且模板已經給定。所以嘗試用POI來操作一下。由於自己用的Office版本大於2007,所以在操作的時候遇到各種坑,特此記錄一下~~~
注意點
1、由於POI對於Office2003和2007之後的版本對應的jar包不一樣,操作的類也不一樣,所以在操作之前一定要準確找到不同版本的Excel對應的jar包。
2、編譯時不報錯不代表執行不報錯,很多操作都是POI在操作Excel時出現問題的,所以除了新增程式碼中需要Import類所在的jar包之外,必須要加入額外的jar包。
操作2007以上需要的jar包
這些jar檔案都不需要自己單獨下載,只要去Apache下載 poi-bin-3.16-20170419.zip
就有了全部的資料。
示例程式碼
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class POIExcel {
public static void main(String[] args) throws IOException, InvalidFormatException {
// 獲取Excel模板檔案
File file = new File("D:\\座位分佈圖模板.xlsx");
// 讀取Excel模板
XSSFWorkbook wb = new XSSFWorkbook(file);
// 讀取了模板內sheet的內容
XSSFSheet sheet = wb.getSheetAt(0);
// 在相應的單元格進行(讀取)賦值 行列分別從0開始
XSSFCell cell = sheet.getRow(14).getCell(8);
cell.setCellValue("張三");
// 修改模板內容匯出新模板
FileOutputStream out = new FileOutputStream("D:/座位分佈圖.xlsx");
// 關閉相應的流
wb.write(out);
out.close();
wb.close();
}
}
複製程式碼