poi导出excel直接打包的方法
来源:互联网 发布:兰蔻网络推广方案 编辑:程序博客网 时间:2024/04/30 15:05
1、调用工具类的方法继承了HttpServlet,类中的方法为service()或其他。
service()方法有代码如下:
- resp.setContentType("application/zip;charset=ISO8859-1");
- resp.setHeader("Content-Disposition", "attachment;filename="
- + new String(excelName.getBytes(), "ISO8859-1")
- + ".zip");
- OutputStream outputStream = resp.getOutputStream();// 取得输出流
- ExportExcelUtil exportExcelUtil = new ExportExcelUtil();
- exportExcelUtil.exportExcel(sql, outputStream, excelName);
2、工具类如下
- package com.isoftstone.runbat.util;
- import java.io.OutputStream;
- import java.math.BigDecimal;
- import java.nio.charset.Charset;
- import java.sql.Date;
- import java.sql.ResultSetMetaData;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipOutputStream;
- import javax.sql.RowSet;
- 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;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- import oracle.sql.TIMESTAMP;
- import com.isoftstone.fwk.util.SpringUtils;
- public class ExportExcelUtil {
- private static Logger logger = LoggerFactory.getLogger(ExportExcelUtil.class);
- /**
- * @param sql
- * 查询数据的sql
- * @param outputStream
- * 输出流
- * @param sheetName
- * 工作薄中工作表的名字
- */
- public void exportExcel(String sql, OutputStream outputStream,String sheetName) {
- HSSFWorkbook wb = new HSSFWorkbook();// 声明一个工作薄
- HSSFCellStyle style = wb.createCellStyle(); // 一个样式
- style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 设置垂直居中
- style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 水平居中
- HSSFFont headerFont = (HSSFFont) wb.createFont(); // 创建字体样式
- headerFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);// 字体加粗
- headerFont.setFontName("Times New Roman"); // 设置字体类型
- headerFont.setFontHeightInPoints((short) 8); // 设置字体大小
- style.setFont(headerFont); // 为标题样式设置字体样式
- /*
- * style.setBorderBottom(HSSFCellStyle.BORDER_THIN); // 下边框
- * style.setBorderLeft(HSSFCellStyle.BORDER_THIN);// 左边框
- * style.setBorderTop(HSSFCellStyle.BORDER_THIN);// 上边框
- * style.setBorderRight(HSSFCellStyle.BORDER_THIN);// 右边框
- */
- style.setWrapText(true);
- HSSFSheet sheet = wb.createSheet(sheetName);// 声明工作薄里中一个工作表的名字
- sheet.setDefaultColumnWidth(30);// 给工作一个默认长度
- HSSFRow row = sheet.createRow(0); // 创建第一行(也可以称为表头)
- try {
- // 通过传过来的sql获得数据
- RowSet rowSet = SpringUtils.getCommonDao().queryNativeSQL(sql,null, false);
- ResultSetMetaData columnNames = rowSet.getMetaData();
- int columnValues = columnNames.getColumnCount();
- for (int i = 0; i < columnValues; i++) {
- HSSFCell cell = row.createCell(i);
- cell.setCellStyle(style);
- cell.setCellValue(columnNames.getColumnName(i + 1));
- }
- int rowNo = 1;
- int m = 1;
- /*
- * HSSFFont contextFont = (HSSFFont) wb.createFont(); //创建字体样式
- * contextFont.setBoldweight(HSSFFont.BOLDWEIGHT_NORMAL);//字体加粗
- * style.setFont(contextFont);
- */
- while (rowSet.next()) {
- row = sheet.createRow(rowNo);
- for (int columnNo = 0; columnNo < columnValues; columnNo++) {
- HSSFCell cell = row.createCell(columnNo);
- // cell.setCellStyle(style);
- Object columnValue = rowSet.getObject(columnNo + 1);
- if (columnValue == null) {
- continue;
- }
- if (columnValue instanceof String) {
- cell.setCellValue(rowSet.getString(columnNo + 1));
- } else if (columnValue instanceof Integer) {
- cell.setCellValue(rowSet.getInt(columnNo + 1));
- } else if (columnValue instanceof Double) {
- cell.setCellValue(rowSet.getDouble(columnNo + 1));
- } else if (columnValue instanceof Date) {
- cell.setCellValue(rowSet.getDate(columnNo + 1));
- } else if (columnValue instanceof TIMESTAMP) {
- cell.setCellValue(rowSet.getTimestamp(columnNo + 1));
- } else if (columnValue instanceof BigDecimal) {
- cell.setCellValue(rowSet.getBigDecimal(columnNo + 1).doubleValue());
- }
- }
- if (rowNo % 60000 == 0) {
- m++;
- sheet = wb.createSheet(sheetName + m);// 声明工作薄里中一个工作表的名字
- sheet.setDefaultColumnWidth(30);// 给工作一个默认长度
- row = sheet.createRow(0); // 创建第一行(也可以称为表头)
- for (int i = 0; i < columnValues; i++) {
- HSSFCell cell = row.createCell(i);
- cell.setCellStyle(style);
- cell.setCellValue(columnNames.getColumnName(i + 1));
- }
- rowNo = 0;
- }
- rowNo++;
- }
- //解决中文乱码:1、使用apache的ant.jar中的ZipOutputStream方法setEncoding
- //2.使用JDK1.7 tomcat的JDK改为1.7
- ZipOutputStream zip = new ZipOutputStream(outputStream,Charset.forName("GBK"));
- ZipEntry entry = new ZipEntry(sheetName+".xls");//设置压缩包中文件的名字
- zip.putNextEntry(entry);
- wb.write(zip);//将创建的excel写入压缩包中
- zip.flush();
- zip.close();
- logger.info("导出"+sheetName+"成功");
- } catch (Exception e) {
- e.printStackTrace();
- logger.error("导出"+sheetName+"失败");
- }
- }
- }
0 0
- poi导出excel直接打包的方法
- 使用poi导出excel并打包的一种方法
- poi的导出excel(直接下载)
- POI导出Excel的公共方法
- POI的excel导出
- POI 导出excel方法 ExcelExportUtil
- poi导出Excel的一个公共方法(Struts1)
- POI Excel导出,我的又一个模板方法
- POI导出excel表时,常用到的方法
- poi操作excel导出单元格设置不同格式的方法
- java的excel导出[poi]
- SpingMVC+poi的Excel导出
- POI导出excel的解决方案
- POI实现Excel的导出
- POI导出excel的整个过程
- POI Excel文件的导出
- poi导出到excel方法封装
- Java 数据导出Excel 方法 POI / JXL
- AVI Player with Playmaker actions 播放插件浅谈 (一)
- 使用百度地图查询经过某一公交站的所有公交线路
- ProgressBar 颜色的设置
- iOS中关于UIButton缩进问题
- Oracle中由 case when 报错 ORA-12704:字符集不匹配的简易解决
- poi导出excel直接打包的方法
- 基于Activiti5工作流实战企业协同OA办公系统(spring-data-jpa、uur前台组件)
- oj--C++结构体之统计最高最低分
- Android中TextView中设置字体颜色
- 商品秒杀
- 设置 label 的行间距和删除线
- 科目二难点——倒车入库
- 让你的javascript支持AMD,CMD和原生JS
- PS教程!手把手教你打造复古几何无缝纹理背景