struts2利用poi导出excel文件

来源:互联网 发布:天津网络营销黑马网络 编辑:程序博客网 时间:2024/03/29 08:41

首先,利用poi生成excel

代码如下:

package com.hwhzsoft.utils;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.InputStream;import java.util.Map;import java.util.List;import org.apache.poi.hssf.usermodel.HSSFCell;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;/** * Excel文件导出工具类 * 该类是对导出excel文件功能的封装,这里提供了一个静态方法,getWorkbook();其有3个参数,第一个String数组 * 用来接收标题信息,第二个String数组中存放的内容是Map中存放的值的key,第三个list中已map的形式存放需要导出 * 到excel的结果。 * 同时该方法返回的是一个HSSFWorkbook对象,方便后续进行任何处理 *  * @author songjianchang * @time 2013年11月29日10:16:05 */public class ExcelExportUtil { /** * 将数据写入Workbook(是否考虑数据量太大问题) *  * @param titles 标题栏 * @param valueNames 查询结果对应的key * @param result 查询结果 * @return */public static InputStream getExcelInputStream(String[] titles, String[] valueNames ,List<Map<String, Object>> result){//创建workbook对象HSSFWorkbook workbook = new HSSFWorkbook();//创建一个sheet页面HSSFSheet sheet = workbook.createSheet("sheet1");//创建第1行,表头信息HSSFRowrow = sheet.createRow(0);//声明一个cellHSSFCell cell;//填充表头数据for (int i = 0; i < titles.length; i++) {//创建第i列cell = row.createCell(i);//填充第i列的值cell.setCellValue(new HSSFRichTextString(titles[i]));}/** * 将结果插入到sheet表中 */for (int i = 0; i < result.size(); i++) {//创建第i+1列(除去表头)row = sheet.createRow(i +1);//获取第i个map的对象Map<String, Object> map = result.get(i);/** * 遍历Map的值,并填充到cell中 */for (int j = 0; j < titles.length; j++) {//创建单元格cell = row.createCell(j);//获取map中的值String temp = map.get(valueNames[j]).toString();cell.setCellValue(temp);}}try {ByteArrayOutputStream baos = new ByteArrayOutputStream();workbook.write(baos);baos.flush();byte[] temps = baos.toByteArray();InputStream input = new ByteArrayInputStream(temps, 0, temps.length);baos.close();return input;} catch (Exception e) {System.out.println("生成excel文件失败!");}return null;} }
在Action中对该方法进行调用,该部分的核心代码如下

try {String[] titles = {"户号","仪表号","厂商","时间","进口温度","出口温度","温差","累计热量","累计流量","功率","流速","状态"};String[] valueNames = {"resident_name","meter_number","meter_type_name","date","in_temperature","out_temperature","difference","total_heat","total_flow","instant_heat","instant_flow","read_status"};List<Map<String, Object>> results = meterNewService.getAllMeterNew();input = ExcelExportUtil.getExcelInputStream(titles, valueNames, results);return SUCCESS;} catch (Exception e) {System.out.println("Excel导出错误");}
在struts2中对该Action的配置

<result name="success" type="stream"><param name="contentType">application/vnd.ms-excel</param><param name="inputName">input</param><param name="contentDisposition">filename="report.xls"</param><param name="bufferSize">1024</param></result>




0 0