Java Excel 导出

本文介绍了一个使用Java进行Excel数据处理的实例,展示了如何在现有Excel模板基础上修改数据,包括读取工作簿、创建行和单元格、填充数据等关键步骤,并提供了一种通过反射机制获取对象属性值的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值