关于Java 导出 excel 文件的整理
// 注意创建顺序是 excel文件 - sheet表 - row行 - cell单元格 // 先创建HSSFWorkbook对象,对应一个Excel文件 ,再创建HSSFSheet对象,对应一张表 // 根据HSSFSheet依次创建对应的row,再创建单元格,最后进行set值 // HSSFCellStyle是单元格样式,需应用于单元格上 public String doExportExcel() throws Exception{ HSSFWorkbook wb = new HSSFWorkbook(); // 创建一个HSSFWorkbook,对应一个Excel文件 FileOutputStream out = null; try{ String filePath = FilePath.getSystemRootPath()+"/files/dataExport/"; //输出路径,自定义 File dirFile = new File(filePath); if (!dirFile.exists()) { dirFile.mkdirs(); } String fileName = "汇总表.xls"; //文件名,自定义 filePath = filePath+"/"+fileName; HSSFSheet sheet = wb.createSheet(fileName);//在HSSFWorkbook中添加一个sheet,对应Excel文件中的sheet(表名) sheet.setDefaultColumnWidth(25);//设置表格列宽 sheet.setDefaultRowHeightInPoints(50);//设置表格行高 sheet.setColumnWidth(0, 5*512); //设置第0列的宽度,注意这里单位的换算 sheet.setColumnWidth(1,10*512); //设置第1列的宽度 //表头行(第0行)格式设置 HSSFRow hssfRow = sheet.createRow(0);//添加表头行,从0行开始 sheet.addMergedRegion(new CellRangeAddress(0,0,0,5));//合并单元格、CellRangeAddress(起始行号,终止行号,起始列号,终止列号) // 合并单元格时,也可以分开写 // CellRangeAddress cra =new CellRangeAddress(0,0,0,5); // CellRangeAddress(起始行号,终止行号,起始列号,终止列号) // sheet.addMergedRegion(cra); // 使用RegionUtil类为合并后的单元格添加边框 // RegionUtil.setBorderBottom(BorderStyle.MEDIUM, cra, sheet);//下边框 // RegionUtil.setBorderTop(BorderStyle.MEDIUM, cra, sheet); //上边框 // 在导出excel的时候,计数都是从0开始计算的,即使合并了单元格,在设置值的时候,
// 依旧需要将合并的单元格数算进去,才能准确赋值,所以这里在赋值的时候,
// 比如,合并了5个单元格,那么这个单元格在赋值的时候,将"值"赋给第一个单元格,剩下的4个则填入null或不填, // 然后获取第6个单元格进行赋值,这样保证填入的值的顺序保持一致,不至于被覆盖 HSSFCell headCell = hssfRow.createCell(0);//添加第一个单元格 HSSFFont headFont = wb.createFont(); //创建字体格式,可以设置多个 headFont.setBold(true);//字体加粗 headFont.setFontName("宋体");//设置字体 headFont.setFontHeightInPoints((short)24); //设置字体大小 headFont.setColor(HSSFColor.RED.index); // 字体设置颜色 HSSFCellStyle headCellStyle = wb.createCellStyle();//创建单元格格式,可以设置多个 headCellStyle.setFont(headFont); //单元格格式应用字体格式 headCellStyle.setAlignment(HorizontalAlignment.CENTER);//单元格内容——左右居中 headCellStyle.setVerticalAlignment(VerticalAlignment.CENTER);//单元格内容——上下居中 headCellStyle.setBorderBottom(BorderStyle.THIN); //设置底部边框 - 粗thick-中medium-细thin headCellStyle.setBorderTop(BorderStyle.THIN);//设置顶部边框 headCellStyle.setBorderRight(BorderStyle.THIN);//设置右部边框 headCell.setCellStyle(headCellStyle); // 单元格应用格式 headCell.setCellValue(beginTime+"汇总表"); //单元格设置值 HSSFRow hssfRow2 = sheet.createRow(2);//添加第2行,从0开始 List<String> titles=Lists.newArrayList("xx","yy"); String[] titleArr = titles.toArray(new String[titles.size()]); for(int j=0;j<=5;j++){
// 数据写入,顺序为:创建行 - 创建单元格 - 单元格设置格式和赋值 HSSFCell headCellSet = hssfRow2.createCell(j); //设置值时,如果是数值,则需要将格式转化为Integer,
//不然excel会保存为文本,导致在excel文件中无法进行计算求和之类的问题 headCellSet.setCellValue(titleArr[j].toString()); headCellSet.setCellStyle(cellStyle); } // 添加尾部 // 创建最后一行,设置字体格式,设置单元格格式,设置值 out = new FileOutputStream(filePath); wb.write(out); // 写入文件 return fileName; }catch(Exception e){ e.printStackTrace(); throw e; }finally{ out.close(); wb.close(); } }
不要放弃,对自己的思索,对自己的真实。

浙公网安备 33010602011771号