利用poi导出excel,并自动生成表头
2017-01-10 10:13
471 查看
之前导出excel大量重复代码,自己输入excel表头,一行一行写入太麻烦了。最新发现只要配置查询的sql语句,其他代码无需改动。废话不说了,贴代码。
注:使用原生的jdbc查询。
Workbook wb = new SXSSFWorkbook(100);// 声明一个工作薄
CellStyle style = wb.createCellStyle(); // 一个样式
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置垂直居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平居中
Font headerFont = 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);// 右边框
*/
注:使用原生的jdbc查询。
Workbook wb = new SXSSFWorkbook(100);// 声明一个工作薄
CellStyle style = wb.createCellStyle(); // 一个样式
style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); //设置垂直居中
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); //水平居中
Font headerFont = 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); Sheet sheet = wb.createSheet(sheetName);//声明工作薄里中一个工作表的名字 sheet.setDefaultColumnWidth(20);//给工作一个默认长度 Row row = sheet.createRow(0); //创建第一行(也可以称为表头) //通过传过来的sql获得数据 RowSet rowSet = //执行原生sql,是为了获得列的信息ResultSetMetaData。 ResultSetMetaData columnNames = rowSet.getMetaData(); int columnValues = columnNames.getColumnCount(); for(int i=0;i<columnValues;i++){ Cell cell = row.createCell(i); cell.setCellStyle(style); cell.setCellValue(columnNames.getColumnName(i+1)); } int rowNo=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++){ Cell 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(DateUtils.Date2String(rowSet.getDate(columnNo+1), "yyyy-MM-dd")); }else if(columnValue instanceof TIMESTAMP){ cell.setCellValue(rowSet.getTimestamp(columnNo+1)); }else if(columnValue instanceof BigDecimal){ cell.setCellValue(rowSet.getBigDecimal(columnNo+1).doubleValue()); } } rowNo++; } File dstFile = File.createTempFile(String.valueOf(System.currentTimeMillis()), ".xlsx"); dstFile.deleteOnExit();//程序退出时删除文件 OutputStream output=new FileOutputStream(dstFile); wb.write(output);//写入文件 output.flush(); output.close();//关闭流
相关文章推荐
- Html Table用JS导出excel格式问题 导出EXCEL后单元格里的000412341234会变成412341234 7-14 会变成 2018-7-14(7月14) 自定义格式 web利用table表格生成excel格式问题 js导出excel增加表头、mso-number-format定义数据格式 数字输出格式转换 mso-number-format:"\@"
- jsp利用POI生成Excel并在页面中导出的示例
- jsp利用POI生成Excel并在页面中导出的示例
- jsp利用POI直接生成Excel并在页面中导出
- jsp利用POI直接生成Excel并在页面提示打开下载
- Java程序员从笨鸟到菜鸟之(一百零四)java操作office和pdf文件(二)利用POI实现数据导出excel报表
- 利用POI组件 导入导出excel
- GridView自动生成列时,利用DIV控制显示长宽 控件数据行和表头文字不换行
- 使用POI生成Excel文件,可以自动调整excel列宽等
- 使用POI生成Excel文件,可以自动调整excel列宽等
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别
- 利用poi实现页面上excel的导入和导出(不刷新页面)之导出
- java利用POI导出EXCEL总结
- 利用spring的poi生成Excel
- delhi从数据库导出数据生成Excel并自动发送邮件笔记
- 使用POI生成Excel文件,可以自动调整excel列宽遇到的问题及解决
- 利用poi导出excel的工具类
- 使用Jakarta POI EXCEL API自动生成ORACLE数据字典的源代码
- 使用POI生成Excel文件,可以自动调整excel列宽 .
- Java程序员从笨鸟到菜鸟之(一百零五)java操作office和pdf文件(三)利用jxl实现数据导出excel报表以及与POI的区别