博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
excel导出工具类(POI)
阅读量:6338 次
发布时间:2019-06-22

本文共 3336 字,大约阅读时间需要 11 分钟。

hot3.png

import com.hikvision.hikadmin.util.DateUtil;import org.apache.commons.io.IOUtils;import org.apache.poi.ss.usermodel.CellStyle;import org.apache.poi.ss.usermodel.Font;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.xssf.usermodel.XSSFWorkbook;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.OutputStream;import java.lang.reflect.Method;import java.util.Date;import java.util.List;/** * @Description excel导出 */public class ExportExcel {    private static final Logger logger = LoggerFactory.getLogger(ExportExcel.class);    /**     * excel导出     *     * @param excelName excel名称     * @param titels    每列标题     * @param fields    标题所对应实体类中的字段     * @param data      数据(泛型是对应的实体类)     * @param response     */    public static void export(String excelName, String[] titels, String[] fields, List
data, HttpServletResponse response) { if (titels.length == 0 || fields.length == 0) return; OutputStream os = null; response.setContentType("application/x-excel;charset=UTF-8"); try { response.setHeader("Content-disposition", "attachment; filename=" + new String(excelName.getBytes("gb2312"), "ISO8859-1") + DateUtil.formatDate(new Date(), "yyyyMMddHHmmss") + ".xlsx"); os = response.getOutputStream(); XSSFWorkbook workBook = new XSSFWorkbook(); Sheet sheet = workBook.createSheet(excelName); Row row = sheet.createRow(0); Font f = workBook.createFont(); f.setBoldweight(Font.BOLDWEIGHT_BOLD);//字体加粗 f.setFontHeightInPoints((short) 13);//字体大小 //样式 CellStyle style = workBook.createCellStyle(); style.setAlignment(CellStyle.ALIGN_CENTER);//左右居中 style.setVerticalAlignment(CellStyle.VERTICAL_CENTER);//上下居中 style.setFont(f); for (int i = 0; i < titels.length; i++) { row.createCell(i).setCellValue(titels[i]); row.getCell(i).setCellStyle(style); sheet.setColumnWidth(i, titels[i].getBytes().length * 2 * 256); } for (int i = 0; i < data.size(); i++) { Row r = sheet.createRow(i + 1); Object object = data.get(i); for (int j = 0; j < fields.length; j++) { char[] chars = fields[j].toCharArray(); //判断首字母是否小写 if (Character.isLowerCase(chars[0])){ chars[0] -= 32; } Method m = object.getClass().getMethod("get" + String.valueOf(chars)); r.createCell(j).setCellValue(null == m.invoke(object) ? "" : String.valueOf(m.invoke(object))); } } workBook.write(os); } catch (Exception e) { logger.error("Excel导出" + excelName + "失败 : " + e); } finally { if (os != null) { try { os.flush(); } catch (IOException e) { logger.error("Excel导出" + excelName + "失败,强制清除输出流失败 : " + e); } IOUtils.closeQuietly(os); } } }}

 

转载于:https://my.oschina.net/u/3445245/blog/1786392

你可能感兴趣的文章
ubuntu下,py2,py3共存,/usr/bin/python: No module named virtualenvwrapper错误解决方法
查看>>
Ext.form.field.Number numberfield
查看>>
Linux文件夹分析
查看>>
解决部分月份绩效无法显示的问题:timestamp\union al\autocommit等的用法
查看>>
nginx 域名跳转 Nginx跳转自动到带www域名规则配置、nginx多域名向主域名跳转
查看>>
man openstack >>1.txt
查看>>
linux几大服务器版本大比拼
查看>>
在BT5系统中安装postgresQL
查看>>
【Magedu】Week01
查看>>
写给MongoDB开发者的50条建议Tip25
查看>>
为什么要让带宽制约云计算发展
查看>>
2012-8-5
查看>>
VS中ProjectDir的值以及$(ProjectDir)../的含义
查看>>
我的友情链接
查看>>
PHP实现排序算法
查看>>
Business Contact Mnanager for Outlook2010
查看>>
9种用户体验设计的状态是必须知道的(五)
查看>>
解决WIN7下组播问题
查看>>
陈松松:视频营销成交率低,这三个因素没到位
查看>>
vmware nat模式原理探究,实现虚拟机跨网段管理
查看>>