`
goodboyloveyy
  • 浏览: 3499 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

利用poi导出excel的工具类

    博客分类:
  • J2EE
阅读更多
在实际的项目中,经常会有导出到Excel的功能,前阶段研究了下poi导出Excel,自己整理了一个导出的工具类,下面把代码贴出来,大家相互学习学习!

工具类

import java.io.OutputStream;
import java.net.URLEncoder;

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.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

/**
 * 导出Excel工具类
 * @author goodboyloveyy
 *
 */
public abstract class ExcelUtils {
	/**
	 * 生成excel的通用模版
	 * @param response
	 *            响应,设置生成的文件类型,文件头编码方式和文件名,以及输出
	 * @param firstLine
	 *            标题字符串数组 String[]
	 * @param sheetName
	 *            工作表名
	 * @param fileName
	 *            文件名
	 */

	@SuppressWarnings("deprecation")
	public void excel(HttpServletResponse response, String[] firstLine,
			String sheetName, String fileName) throws Exception{
		

			HSSFWorkbook wb = new HSSFWorkbook();	// excel文件,一个excel文件包含多个表

			HSSFSheet sheet = wb.createSheet();		// 表,一个表包含多个行

			wb.setSheetName(0, sheetName, HSSFWorkbook.ENCODING_UTF_16);  	//设置sheet中文编码

			// 设置字体等样式
			HSSFFont font = wb.createFont();

			font.setFontHeightInPoints((short) 12);

			font.setFontName("Courier New");

			HSSFCellStyle style = wb.createCellStyle();

			style.setFont(font);

			style.setWrapText(true);

			style.setAlignment(HSSFCellStyle.ALIGN_LEFT);

			style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);

			HSSFRow row;				// 行,一行包括多个单元格

			HSSFCell cell;				// 单元格

			row = sheet.createRow(0);			//由HSSFSheet生成行

			row.setHeightInPoints((float) 15);		//设置行高

			// 生成首行标题

			for (short j = 0; j < firstLine.length; j++) {

				cell = row.createCell(j);		//由行生成单元格

				cell.setCellStyle(style);		//设置单元格样式

				cell.setEncoding(HSSFCell.ENCODING_UTF_16);	//设置cell中文编码;

				cell.setCellValue(firstLine[j]);

				sheet.setColumnWidth(j, (short) (5000));	//设置列宽

			}

			fillData(sheet, style);		// 该方法由具体调用时进行实现

			// 导出
			OutputStream out = null;
			
			response.setContentType("application/x-msdownload");		// 设置生成的文件类型
				
			response.setHeader("Content-Disposition", "attachment;filename="
						+ URLEncoder.encode(fileName, "UTF-8"));
				
			out = response.getOutputStream();				//取得输出流
				
			wb.write(out);													//写入Excel
			out.close();
	
	}

	/**
	 * 该方法由生成具体的表格时去实现(方法体内进行填充数据)
	 * 
	 * @param sheet
	 * @param style
	 */
	public abstract void fillData(HSSFSheet sheet, HSSFCellStyle style);

}
调用工具类进行导出操作

public String exportCardTypeList(){
		User user = (User) ActionContext.getContext().getSession().get("user");
		if(user==null){
			return LOGIN;
		}else{
			String[] cloumnName = {"卡类型编号","卡类型名称"};  //导出的列名
	    	String sheetName = "产品信息";			   //sheet的名称
	    	String fileName = "cardTypelist.xls";		   //文件名
	    	HttpServletResponse response = ServletActionContext.getResponse();
	    	try {
	    		
			cardTypeList = cardManageService.loadCardType();//查询出数据
			ExcelUtils excelUtil = new ExcelUtils(){	  //生成工具类实例,并实现填充数据的抽象方法

			@SuppressWarnings("deprecation")
			@Override
			public void fillData(HSSFSheet sheet, HSSFCellStyle style) {
				SSFRow row;//行,一行包括多个单元格
				HSSFCell cell;//单元格
				if (null != cardTypeList || cardTypeList.size() > 0) {
 for (int k = 0; k < cardTypeList.size(); k++) {
 row = sheet.createRow(k+1);
 row.setHeightInPoints((float) 15);				                 
				       CardType cardType = cardTypeList.get(k);
		                    	cell = row.createCell((short)0);
		                         cell.setCellStyle(style);
		                         cell.setEncoding(HSSFCell.ENCODING_UTF_16);
		                         cell.setCellValue(SystemUtil.isNull(String.valueOf(cardType.getTypeId())));//产品编号
		                         
		                         
		                         cell = row.createCell((short)1);
		                         cell.setCellStyle(style);
		                         cell.setEncoding(HSSFCell.ENCODING_UTF_16);
		                         cell.setCellValue(SystemUtil.isNull(cardType.getName()));//产品名称
		                         
				            }
				        }
				    }
					};
					
					excelUtil.excel(response, cloumnName, sheetName, fileName);
					
					return null;

			} catch (Exception e) {
				logger.error("exportCardTypeList error!", e);
				return ERROR;
			}
	    	
		}
	}
分享到:
评论

相关推荐

    java使用POI导出 Excel工具类

    java使用POI导出 Excel+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。

    java 使用poi导出excel工具类

    java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!

    POI导出Excel工具类,自动设置标题 列名 文件名,可插入图片,合并单元格

    在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...

    Java poi导入导出EXCEL工具类(兼容各版本)

    概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...

    poi导出excel工具类一

    poi导出excel工具类,亲测可用

    Java 利用poi 导出excel 工具类,超实用,简单

    * 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上 * * @param title * 表格标题名 * @param headers * 表格属性列名数组 ...

    java poi导出excel含工具类以及示例

    String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...

    Poi导出Excel工具类

    在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...

    基于POI导出Excel的工具类

    食用指南 https://blog.csdn.net/weixin_44067399/article/details/107974673 本工具为基于POI封装的一个工具类,旨在提高开发效率,供学习交流用 使用本工具的前提是安装了POI

    poi导出excel通用类

    标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...

    poi导出excel支持xls、xlsx格式大数据导出java工具类

    使用poi导出excel支持xls、xlsx格式大数据导出java工具类,支持同一个单元格不同文本格式。找了好久,加上自己修改后,调试通过,发布出来分享,(调整student类位置)包含所需jar包,工具类,使用示例

    利用poi实现导入导出Excel工具类

    标题"利用poi实现导入导出Excel工具类"指出我们将探讨如何利用Apache POI来创建一个工具类,用于在Java应用程序中方便地进行Excel文件的导入和导出操作。 Apache POI库提供了HSSF(处理.xls文件)和XSSF(处理.xlsx...

    Excel POI 工具类

    本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...

    POI导出Excel表格通用工具类

    利用POI实现Java导出Excel表格,为了实现以后通用,做成了一个利用Java的反射机制做成的万金油式工具类,只需要给工具类传入固定的几个参数(映射字段的map集合,数据集合,实体类的Claas等),就可以实现导出Excel,该...

    poi导出根据模板导出excel和简单列表导出excel源码

    这可能是提供的代码库或工具包的名称,其中包含了处理 Excel 导出的类和方法。这个库可能包含了一些通用的辅助函数,如数据转换、样式设置、模板解析等功能,简化了开发者的工作。 总结来说,"poi-excel-handler" ...

    java poi导出excel

    以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...

    基于POI的Excel多Sheet页导出导入工具类

    "基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...

    poi导出excel需要的jar

    "poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...

    poi多sheet页导出工具类和实例 包含多个excel导出

    总之,这个 poi 多 sheet 导出工具类和实例是处理大量数据导出的有效方法,结合合理的数据分组、公共数据获取类以及优化策略,可以高效地生成多个 sheet 或多个 Excel 文件,满足大规模数据的导出需求。

    excel poi工具类 导入 导出 合并单元格 计算公式

    这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...

Global site tag (gtag.js) - Google Analytics