一个程序猿成长记:Java导出Excel文件(弹出下载框)
2017-07-18 15:26
477 查看
一、HSSFWorkbook导出Excel文件(xls格式。适用于一般数据量少文件)
1.0 用到的JAR包
1.1、action类
1.2.1、HSSFWorkbook工具类(导出xls格式文件)
HSSFWorkboook对象,最多支持65535行,[b]适用于一般数据量少导出。
[/b]
1.2.2 SXSSFWorkbook工具类(导出xlsx格式文件。适用于数据量大的文件导出)
SXSSFWorkbook对象,只支持xlsl格式.它就是用来解决大数据量以及超大数据量的导入导出操作的,单个sheet表就支持近104万条数据了.要是导出104万以上的数据,这时我们必须拆分到多个工作表来实现
1.3、设置返回浏览器头文件信息
1.0 用到的JAR包
<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml-schemas</artifactId> <version>3.9</version> </dependency> <dependency> <groupId>org.apache.xmlbeans</groupId> <artifactId>xmlbeans</artifactId> <version>2.3.0</version> </dependency> <dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
1.1、action类
/** * 测试导出Excel文件 * @throws Exception */ public void test() throws Exception{ String sheetName = "导出Excel"; String fileName = "测试导出账单.xls"; String[] title = new String[]{"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; // 显示列 String[][] values=null; List<String> list=new ArrayList<>();//list自定义 list.add("1"); list.add("2"); list.add("3"); list.add("4"); list.add("5"); list.add("6"); list.add("7"); values=new String[list.size()][]; for(int i=0;i<values.length;i++){ values[i] = new String[title.length]; values[i][0] = list.get(i); values[i][1] = list.get(i); values[i][2] = list.get(i); values[i][3] = list.get(i); values[i][4] = list.get(i); values[i][5] = list.get(i); values[i][6] = list.get(i); } // 导出xls格式 HSSFWorkbook workbook =Util.getHssFWorkbook(sheetName, title, values); // 导出xlsx格式 SXSSFWorkbook workbook =Util.getSXSSFWorkbook(sheetName, title, values); // 网页端弹出下载框,将文件保存到指定位置 try { this.setResponseHeader(response,fileName); OutputStream os=response.getOutputStream(); workbook.write(os); os.flush(); os.close(); } catch (Exception e) { e.printStackTrace(); } }
1.2.1、HSSFWorkbook工具类(导出xls格式文件)
HSSFWorkboook对象,最多支持65535行,[b]适用于一般数据量少导出。
[/b]
/** * 导出Excel(xls)工具类 * @param sheetName * @param title * @param values * @param workbook * @return * @throws ParseException */ public static HSSFWorkbook getHssFWorkbook(String sheetName,String[] title,String[][] values) throws ParseException{ SimpleDateFormat format=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); HSSFWorkbook workbook = new HSSFWorkbook(); // 创建一个sheet HSSFSheet sheet = workbook.createSheet(sheetName); // 添加表头 HSSFRow row = sheet.createRow(0); // 单元格样式 HSSFCellStyle style = workbook.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFCell cell=null; // 创建标题 for(int i=0;i<title.length;i++){ cell = row.createCell(i); cell.setCellValue(title[i]); cell.setCellStyle(style); if(i==title.length-1){ sheet.setDefaultColumnWidth(20); } } // 创建内容 if(values !=null && values.length>0){ for(int j=0;j<values.length;j++){ row = sheet.createRow(j+1); for(int k=0;k<values[j].length;k++){ cell = row.createCell(k); // if(k == values[j].length-1){ // cell.setCellValue(format.format(format.parse(values[j][k]))); // }else{ if(k == 0){ cell.setCellValue(Long.parseLong(values[j][k])); }else{ if(numType(values[j][k])){ cell.setCellValue(Double.parseDouble(values[j][k])); }else{ cell.setCellValue(values[j][k]); } } // } cell.setCellStyle(style); } } } return workbook; }
1.2.2 SXSSFWorkbook工具类(导出xlsx格式文件。适用于数据量大的文件导出)
SXSSFWorkbook对象,只支持xlsl格式.它就是用来解决大数据量以及超大数据量的导入导出操作的,单个sheet表就支持近104万条数据了.要是导出104万以上的数据,这时我们必须拆分到多个工作表来实现
import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.streaming.SXSSFWorkbook; /** * 导出xlsx格式数据(支持导出百万级数据) * @param sheetName * @param title * @param values * @return */ public static SXSSFWorkbook getSXSSFWorkbook(String sheetName,String[] title,String[][] values){ // 内存中只创建100个临时对象,超过100个将释放不用对象 SXSSFWorkbook wb =new SXSSFWorkbook(100); // 工作表对象 Sheet sheet =null; // 行对象 Row row = null; // 列对象 Cell cell = null; int rowNo = 0; int pageRowNo = 0; // 表单样式风格 CellStyle style = wb.createCellStyle(); style.setAlignment(CellStyle.ALIGN_CENTER); if(values !=null && values.length>0){ for(int j=0;j<values.length;j++){ // 超过一百万行后换一个工作簿,单个sheet最多1048576行 if(rowNo%1000000 == 0){ sheet = wb.createSheet("这是我的第"+(rowNo/1000000 +1)+"个工作簿"); sheet = wb.getSheetAt(rowNo/1000000); pageRowNo = 0; } rowNo++; // 创建标题 if(pageRowNo == 0){ row = sheet.createRow(0); for(int i=0;i<title.length;i++){ cell = row.createCell(i); cell.setCellValue(title[i]); cell.setCellStyle(style); if(i==title.length-1){ sheet.setDefaultColumnWidth(20); } } }else{ // 创建行 row = sheet.createRow(pageRowNo); for(int k=0;k<values[j].length;k++){ // 创建列 cell = row.createCell(k); if(k == 0){ // 对列进行赋值 cell.setCellValue(Long.parseLong(values[j][k])); }else{ if(numType(values[j][k])){ cell.setCellValue(Double.parseDouble(values[j][k])); }else{ cell.setCellValue(String.valueOf(values[j][k])); } } cell.setCellStyle(style); } } pageRowNo++; } } return wb; }
1.3、设置返回浏览器头文件信息
private void setResponseHeader(HttpServletResponse response2, String fileName) { try { try { fileName = new String(fileName.getBytes(),"ISO8859-1"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } response.setContentType("application/octet-stream;charset=ISO8859-1"); response.setHeader("Content-Disposition", "attachment;filename="+fileName); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); } catch (Exception e) { e.printStackTrace(); } }1.4、测试成功
相关文章推荐
- web导出excel--------java导出文件弹出下载框让用户选择路径
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- 一个程序猿成长记:通过超链接下载文件
- Strurts2下导出Excel文件(含下载弹出框)
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框 【不定期更新】
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- java导出excel 下载文件
- Java POI 导出EXCEL经典实现以及 Java导出Excel弹出下载框
- java --struts2数据库导出Excel文件,下载提示
- springmvc Excel文件上传,使用ajaxSubmit方法进行文件上传,使用弹出层弹出一个框(jquery layer),点击进行下载
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- Java 动态导出Excel可弹出下载_java
- Java导出页面数据或数据库数据至Excel文件并下载,采用JXL技术,小demo(servlet实现)
- java生成excel和下载导出文件的工具类
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- Java POI导出EXCEL经典实现 Java导出Excel弹出下载框 [转]
- Java POI 导出EXCEL经典实现 Java导出Excel弹出下载框
- POI文件导出至EXCEL,并弹出下载框