poi导出百万数据到excel
来源:互联网 发布:c编程思想pdf下载 编辑:程序博客网 时间:2024/05/16 04:48
poi框架在excel导入导出在java项目中经常会用到,但是之前用 HSSF和XSSF是POI导出都会有数据的瓶颈,大概在导出数据达到3万条以上时间上就很慢,再多的数据基本就无法导出。因此POI 3.8版本开始,提供了一种基于XSSF的低内存占用的API—-SXSSF 。测试导出100万数据组装以及生成excel大概要10分钟左右。效率还是非常高的。话不多少直接上代码。。。。
/** * 导出Excel * * @param sheetName sheet名称 * @param titleArrary 标题 * @param dataList 数据列表 * @param filePath 文件路径 * @param fileName 文件名 * @throws Exception * */ public static void exportSXSSFExcel(String sheetName, String[] titleArrary, List<String[]> dataList, String filePath,HttpServletResponse response,String fileName) throws Exception { // 内存中缓存记录数 建议10000 不然会导致内存溢出 SXSSFWorkbook workbook = new SXSSFWorkbook(10000); Sheet sheet = workbook.createSheet(sheetName); Font titleFont = workbook.createFont(); titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); CellStyle titleCellStyle = workbook.createCellStyle(); titleCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); titleCellStyle.setFont(titleFont); int rowIndex = 0; Row row = sheet.createRow(rowIndex++); // 标题 int cellSize = titleArrary.length; for (int i = 0; i < cellSize; i++) { Cell cell = row.createCell(i); cell.setCellStyle(titleCellStyle); cell.setCellValue(titleArrary[i]); if (titleArrary[i] != null) { sheet.setColumnWidth(i, titleArrary[i].getBytes().length * 2 * 140); } } // 数据 CellStyle dataCellStyle = workbook.createCellStyle(); dataCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); for (String[] data : dataList) { row = sheet.createRow(rowIndex); // 遍历列 for (int i = 0; i < data.length; i++) { Cell cell = row.createCell(i); cell.setCellStyle(dataCellStyle); cell.setCellValue(data[i]); } rowIndex++; } if (!fileName.endsWith(".xlsx")) { fileName += ".xlsx"; } if(StringUtil.isNotEmpty(filePath)){ File saveFile = new File(filePath); if (!saveFile.exists()) { saveFile.getParentFile().mkdirs(); saveFile.createNewFile(); } OutputStream outputStream = new FileOutputStream(saveFile); workbook.write(outputStream); outputStream.close(); } if(response!=null){ response.setContentType("application/vnd.ms-excel;charset=utf-8"); fileName = response.encodeURL(new String(fileName.getBytes("utf-8"), "iso8859-1")); response.addHeader("Content-Disposition", "attachment;filename=" + fileName); OutputStream outputStream =response.getOutputStream(); workbook.write(outputStream); outputStream.close(); } }
阅读全文
0 0
- poi导出百万数据到excel
- 百万数据导出到Excel
- PHP导出百万数据到Excel
- POI导出百万级别数据
- 用apache poi导出数据到Excel
- struts2 poi 把数据导出到excel
- POI导出数据到EXCEL经典实现
- java poi导出list数据到excel
- poi技术导出海量数据到excel
- POI实现数据导出到Excel
- java利用poi导出数据到excel
- 用POI导出数据到excel文件
- POI导出数据库数据到excel
- 使用poi将数据导出到excel
- POI+Maven实现数据导出到Excel
- poi实现数据库数据导出到excel
- SSH框架,POI导出数据到Excel
- 利用poi数据导出到excel demo
- (node:31568) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` inste
- (18)用std::wifstream读取Unicode文本
- Vim中通过tags跳转,手动输入选择哪条,"找到 tag: 1 / 2 或更多"
- 《Java多线程编程核心技术》-笔记
- ACM_KMP模板
- poi导出百万数据到excel
- (function($){})(jQuery)、jQuery.extend({})、jQuery.fn.extend()的含义与之间的联系运用
- 2018第四届俄罗斯(莫斯科)国际防务与航空航天展
- Python3爬虫学习笔记(5.Selenium简单操作介绍)
- 嵌入式数据库——sqlite
- 实现Binder接口的异步通信
- Windows下的React-Native开发调试环境安装
- test
- 创建数据库、表