公共POI导出Excel方法详解

最早开始的时候做过一些数据Excel导出的功能,但是到后期每一次导出都需要写一些差不多类似的代码,稍微研究了一下写了个公共的导出方法。

成都创新互联公司专注于怀仁网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供怀仁营销型网站建设,怀仁网站制作、怀仁网页设计、怀仁网站官网定制、微信小程序开发服务,打造怀仁网络公司原创品牌,更为您提供怀仁网站排名全网营销落地服务。

这里用的是POI,然后写成了一个公共类,传入设置好格式的数据,就能弹出下载框。

(补充下getResponse的方法,之前没注意这个有继承!)

package com.hwt.glmf.common;
 
import java.io.IOException;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
 
import javax.servlet.http.HttpServletResponse;
 
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFCellStyle;
import org.apache.poi.hssf.usermodel.HSSFFont;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.util.CellRangeAddress;
import org.apache.poi.hssf.util.HSSFColor;
 
/**
 * 导出Excel公共方法
 * @version 1.0
 * 
 * @author wangcp
 *
 */
public class ExportExcel extends ActionSupport implements ServletRequestAware{
	
	//显示的导出表的标题
	private String title;
	//导出表的列名
	private String[] rowName ;
	
	private List dataList = new ArrayList();
	
	HttpServletResponse response;
	
	//构造方法,传入要导出的数据
	public ExportExcel(String title,String[] rowName,List dataList){
		this.dataList = dataList;
		this.rowName = rowName;
		this.title = title;
	}
			
	/*
	 * 导出数据
	 * */
	public void export() throws Exception{
		try{
			HSSFWorkbook workbook = new HSSFWorkbook();						// 创建工作簿对象
			HSSFSheet sheet = workbook.createSheet(title);		 			// 创建工作表
			
			// 产生表格标题行
	 HSSFRow rowm = sheet.createRow(0);
	 HSSFCell cellTiltle = rowm.createCell(0);
	 
	 //sheet样式定义【getColumnTopStyle()/getStyle()均为自定义方法 - 在下面 - 可扩展】
	 HSSFCellStyle columnTopStyle = this.getColumnTopStyle(workbook);//获取列头样式对象
	 HSSFCellStyle style = this.getStyle(workbook);					//单元格样式对象
	 
	 sheet.addMergedRegion(new CellRangeAddress(0, 1, 0, (rowName.length-1))); 
	 cellTiltle.setCellStyle(columnTopStyle);
	 cellTiltle.setCellValue(title);
 		
			// 定义所需列数
			int columnNum = rowName.length;
			HSSFRow rowRowName = sheet.createRow(2);				// 在索引2的位置创建行(最顶端的行开始的第二行)
			
			// 将列头设置到sheet的单元格中
			for(int n=0;n

这个导出用到的方法,组装数据的如下:

String title = Message.getString("manifestIExportTitle");
 	String[] rowsName = new String[]{"序号","货物运输批次号","提运单号","状态","录入人","录入时间"};
 		List dataList = new ArrayList();
 		Object[] objs = null;
 		for (int i = 0; i < manifestIMainList.size(); i++) {
 			ManifestIMain man = manifestIMainList.get(i);
 			objs = new Object[rowsName.length];
 			objs[0] = i;
 			objs[1] = man.getTranNo();
 			objs[2] = man.getBillNo();
 			objs[3] = man.getStatusFlagCnName();
 			objs[4] = man.getLoginName();
 			SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 			String date = df.format(man.getModiDate());
 			objs[5] = date;
 			dataList.add(objs);
 		}
 		ExportExcel ex = new ExportExcel(title, rowsName, dataList);
 		ex.export();

是通过组装一个List的类型(里面是一些列的导出数据,可以为String/int/long等全部数据类型)。数组rowsName是指导出数据的栏位名称,title是指导出excel的标题和sheet名。

以以上的数据为例,导出的结果显示如下(只是做了简单的处理,有一些合并行与excel的样式问题没有涉及):

公共POI导出Excel方法详解

以上所述是小编给大家介绍的公共POI导出Excel方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对创新互联网站的支持!


本文标题:公共POI导出Excel方法详解
转载注明:http://azwzsj.com/article/isjcsj.html