Java Excel 導出

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;
	}
	
	
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章