java 處理Excel 的筆記
在模板(已存在Excel)的基礎上直接修改數據
package com.springboot.demo.units;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExeclExport {
public static void main(String[] args){
ExeclExport execlExport = new ExeclExport();
execlExport.writeExcel();
}
public void writeExcel(){
OutputStream out = null;
String path = "D:/dddddd.xlsx";
Workbook workbook = getWorkbookByPath(path);
Sheet sheet = workbook.getSheet("Sheet1");
Row row = sheet.getRow(0);
List<ExportVO> list = getExcelDataSource();
int rowNumber = 1;
for(ExportVO exportVO : list){
row = sheet.createRow(rowNumber);
Map<String, String> headerMap = headerMap();
int column = 0;
row.createCell(1).setCellValue(exportVO.getActionSignal());
for (Entry<String, String> key : headerMap.entrySet()) {
String value = null;
try {
String tempKey = key.getValue();
tempKey = tempKey.replaceFirst(tempKey.substring(0, 1), tempKey.substring(0, 1).toUpperCase());
//利用反射獲取VO數據,這裏可以改成通過數據庫放回Map 更方便
Method m = exportVO.getClass().getMethod("get" + tempKey);
value = (String) m.invoke(exportVO);
} catch (Exception e) {
e.printStackTrace();
}
row.createCell(column).setCellValue(value);
column ++;
}
rowNumber ++;
}
try {
out = new FileOutputStream(path);
workbook.write(out);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public Map<String, String> headerMap() {
Map<String, String> headerMap = new LinkedHashMap<String, String>();
headerMap.put("Request No.", "requesrNumber");
headerMap.put("Request Type Category", "requestTypeCategory");
return headerMap;
}
public Workbook getWorkbookByPath(String path) {
Workbook workbook = null;
try {
workbook = new HSSFWorkbook(new FileInputStream(path));
} catch (Exception e) {
try {
workbook = new XSSFWorkbook(new FileInputStream(path));
} catch (IOException e1) {
e1.printStackTrace();
}
}
return workbook;
}
public List<ExportVO> getExcelDataSource() {
List<ExportVO> sourceList = new ArrayList<>();
ExportVO exportVO = new ExportVO();
exportVO.setActionSignal("dfd");
sourceList.add(exportVO);
return sourceList;
}
}
實體類:
package com.springboot.demo.units;
public class ExportVO {
private String requesrNumber;
public String getRequesrNumber() {
return requesrNumber;
}
public void setRequesrNumber(String requesrNumber) {
this.requesrNumber = requesrNumber;
}
}