在实际的项目中,经常会有导出到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+图片工具类 ,里面含有poi jar包,只调用接口即可直接保存Excel。使用的时候需先把数据封装,具体包装需根据实际导出数据进行处理。文件demo中只提供包装格式。
java的poi的导入工具类,只需要传入两个arrayList,一个是execl的标题,一个是ececl的数据,就可以直接导出到execl里面,支持最新的execl,全新封装的,让每一个人都会使用poi导出execl!
在这个场景中,我们关注的是如何使用POI来创建一个功能丰富的Excel导出工具类,它能够自动设置标题、列名、文件名,并且支持插入图片以及合并单元格。下面将详细介绍这些功能的实现。 首先,要创建一个Excel工作簿...
概述:Java poi导入导出EXCEL工具类(兼容各版本) 一、功能说明 允许同时导入或导出多个sheet,同一sheet可同时存在多个数据块,按数据块划分处理数据。 二、配置文件示例及详细说明 1、导入xml配置示例如下(见...
poi导出excel工具类,亲测可用
* 这是一个通用的方法,利用了JAVA的反射机制,可以将放置在JAVA集合中并且符号一定条件的数据以EXCEL 的形式输出到指定IO设备上 * * @param title * 表格标题名 * @param headers * 表格属性列名数组 ...
String outputFile = "D:\\excel\\excel.xlsx"; OutputStream outputStream = new FileOutputStream(outputFile); UtilExcel utilExcel = new UtilExcel(); String titles = "所属区域,所属车间,当前处理人,描述...
在这个场景中,"Poi导出Excel工具类"是一个已经封装好的Java类,设计用于高效地导出大量数据到Excel文件中,并且支持多sheet页的布局。这个工具类简化了开发过程,使得开发者无需关心底层细节,只需调用预定义的方法...
食用指南 https://blog.csdn.net/weixin_44067399/article/details/107974673 本工具为基于POI封装的一个工具类,旨在提高开发效率,供学习交流用 使用本工具的前提是安装了POI
标题“poi导出excel通用类”指的是使用Apache POI库创建一个可以用于导出Excel文件的Java类。Apache POI是开源项目,提供了一组API,使得开发者可以在Java应用程序中读写Microsoft Office格式的文件,包括Excel。在...
使用poi导出excel支持xls、xlsx格式大数据导出java工具类,支持同一个单元格不同文本格式。找了好久,加上自己修改后,调试通过,发布出来分享,(调整student类位置)包含所需jar包,工具类,使用示例
标题"利用poi实现导入导出Excel工具类"指出我们将探讨如何利用Apache POI来创建一个工具类,用于在Java应用程序中方便地进行Excel文件的导入和导出操作。 Apache POI库提供了HSSF(处理.xls文件)和XSSF(处理.xlsx...
本篇将深入探讨"Excel POI 工具类",这个工具类旨在简化日常的Excel操作,提升开发效率。 Apache POI 提供了HSSF(Horizontally Stored Sheets Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别用于...
利用POI实现Java导出Excel表格,为了实现以后通用,做成了一个利用Java的反射机制做成的万金油式工具类,只需要给工具类传入固定的几个参数(映射字段的map集合,数据集合,实体类的Claas等),就可以实现导出Excel,该...
这可能是提供的代码库或工具包的名称,其中包含了处理 Excel 导出的类和方法。这个库可能包含了一些通用的辅助函数,如数据转换、样式设置、模板解析等功能,简化了开发者的工作。 总结来说,"poi-excel-handler" ...
以上就是使用Java POI导出Excel的基本步骤。你可以根据实际需求调整代码,例如添加数据遍历、样式设置、图表生成等功能。确保正确管理资源,避免内存泄漏,特别是在服务器端处理大量数据时。记得在完成后关闭工作簿...
"基于POI的Excel多Sheet页导出导入工具类"是一个实用的Java类库,专为处理Excel文件中的多个工作表(Sheet)而设计,提供了一种高效且灵活的方式来操作Excel数据。 该工具类的核心功能包括: 1. **多Sheet页操作**...
"poi导出excel需要的jar"指的是在使用Apache POI进行Excel导出时,你需要包含特定的JAR依赖文件。 首先,要实现POI导出Excel的功能,你需要下载Apache POI相关的JAR文件。这些文件通常包括以下核心组件: 1. **poi...
总之,这个 poi 多 sheet 导出工具类和实例是处理大量数据导出的有效方法,结合合理的数据分组、公共数据获取类以及优化策略,可以高效地生成多个 sheet 或多个 Excel 文件,满足大规模数据的导出需求。
这个“excel poi工具类”是利用Apache POI库来实现对Excel文件进行导入、导出、合并单元格以及处理计算公式的功能。下面我们将深入探讨这些知识点。 **1. Apache POI库介绍** Apache POI是一个开源项目,它为Java...