从数据库查询到的数据导出到excel中
2018-03-02 10:15
681 查看
步骤一:封装数据
List<Map<String, String>> result = new ArrayList<>(); Map<String, String> map = new LinkedHashMap<>(); map.put("U_ID", "..."); ... result.add(map);
步骤二:定义变量值,创建Excel文档对象。
String fileName = "公司员工信息表.xls"; // 定义文件名 String headString = "公司员工信息表"; // 定义表格标题 String sheetName = "工作表一"; // 定义工作表表名 String filePath = "E:\\test\\"; // 文件本地保存路径 String[] thead = {"主键(U_ID)","状态(UDT_STATE)","姓名(U_NAME)","SAP编号(UDT_SAPID)","性别(U_SEX)","管理关系归属(UDT_ASCRIPTION)","所属公司(UDT_COMPANY)","一级部门(UDT_FIRST)","二级部门(UDT_SECOND)","职务岗位(POSSITION_ID)","厂区(UDT_PARK)","城市(CITY_NAME)"}; // 定义表头内容 int[] sheetWidth = {2500,3500,3000,4000,2500,5000,5000,5000,5000,5000,3500,3500}; // 定义每一列宽度 HSSFWorkbook wb = new HSSFWorkbook(); // 创建Excel文档对象 HSSFSheet sheet = wb.createSheet(sheetName); // 创建工作表
步骤三:生成表格
表格分为了三部分,按顺序生成。基本思路是先创建行,再创建每一行中的每一格,添加样式,填入内容。// ①创建表格标题 ExcelUtil.createHeadTittle(wb, sheet, headString, result.get(0).size() - 1); // result.get(0).size() - 1为表格占用列数,从0开始1
2
3
4
// ②创建表头 ExcelUtil.createThead(wb, sheet, thead, sheetWidth);1
2
// ③填入数据 ExcelUtil.createTable(wb, sheet, result);调用的ExcelUtil工具类代码如下:
public class ExcelUtil { /** * 创建表格标题 * @param wb Excel文档对象 * @param sheet 工作表对象 * @param headString 标题名称 * @param col 标题占用列数 */ public static void createHeadTittle(HSSFWorkbook wb,HSSFSheet sheet,String headString,int col){ HSSFRow row = sheet.createRow(0); // 创建Excel工作表的行 HSSFCell cell = row.createCell(0); // 创建Excel工作表指定行的单元格 row.setHeight((short) 1000); // 设置高度 cell.setCellType(HSSFCell.ENCODING_UTF_16); // 定义单元格为字符串类型 cell.setCellValue(new HSSFRichTextString(headString)); sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, col)); // 指定标题合并区域 // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 指定单元格居中对齐 cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); // 指定单元格垂直居中个对齐 cellStyle.setWrapText(true); // 指定单元格自动换行 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("微软雅黑"); font.setFontHeightInPoints((short) 16); // 字体大小 cellStyle.setFont(font); cell.setCellStyle(cellStyle); } /** * 创建表头 * @param wb Excel文档对象 * @param sheet 工作表对象 * @param thead 表头内容 * @param sheetWidth 每一列宽度 */ public static void createThead(HSSFWorkbook wb,HSSFSheet sheet,String[] thead,int[] sheetWidth){ HSSFRow row1 = sheet.createRow(1); row1.setHeight((short) 600); // 定义单元格格式,添加单元格表样式,并添加到工作簿 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); cellStyle.setWrapText(true); cellStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index); // 设置背景色 cellStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); cellStyle.setBorderRight(HSSFCellStyle.BORDER_THIN); // 设置右边框类型 cellStyle.setRightBorderColor(HSSFColor.BLACK.index); // 设置右边框颜色 // 设置单元格字体 HSSFFont font = wb.createFont(); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); font.setFontName("宋体"); font.setFontHeightInPoints((short) 10); cellStyle.setFont(font); // 设置表头内容 for(int i=0;i<thead.length;i++){ HSSFCell cell1 = row1.createCell(i); cell1.setCellType(HSSFCell.ENCODING_UTF_16); cell1.setCellValue(new HSSFRichTextString(thead[i])); cell1.setCellStyle(cellStyle); } // 设置每一列宽度 for(int i=0;i<sheetWidth.length;i++){ sheet.setColumnWidth(i, sheetWidth[i]); } } /** * 填入数据 * @param wb // Excel文档对象 * @param sheet // 工作表对象 * @param result // 表数据 */ public static void createTable(HSSFWorkbook wb,HSSFSheet sheet,List<Map<String, String>> result){ // 定义单元格格式,添加单元格表样式,并添加到工作薄 HSSFCellStyle cellStyle = wb.createCellStyle(); cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER); cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); cellStyle.setWrapText(true); // 单元格字体 HSSFFont font = wb.createFont(); font.setFontName("宋体"); font.setFontHeightInPoints((short) 10); cellStyle.setFont(font); // 循环插入数据 for(int i = 0; i < result.size(); i++ ){ HSSFRow row = sheet.createRow(i+2); row.setHeight((short) 400); // 设置高度 HSSFCell cell = null; int j = 0; for (String key : (result.get(i).keySet())) { cell = row.createCell(j); cell.setCellStyle(cellStyle); cell.setCellValue(new HSSFRichTextString(result.get(i).get(key))); j++; } } } }
步骤四:输出Excel文件到本地
FileOutputStream fos = new FileOutputStream(new File(filePath+fileName)); // filePath,fileName是如上定义的文件保存路径及文件名 wb.write(fos); fos.close(); wb.close();
相关文章推荐
- C# DataGgridView 控件绑定数据库sql server,查询数据,导出到Excel
- 导出EXCEL表格之三将数据库中查询出的数据原样导出
- 查询数据库数据导出到Excel
- 导出从数据库中查询到的所有的数据到Excel中
- 导出数据库查询数据至Word和Excel格式
- 如何将数据库中的多表的查询数据导出到excel中
- 如何将C#中将TextBox的数据以及从数据库中查询得到的数据导出到Excel中
- 导出从数据库中查询到的所有的数据到Excel中
- input file 文件上传下载 查询数据库数据并导出Excel
- phpexcel导出数据库数据生成excel文件
- 将数据库中的数据导出到Excel
- 利用poi将数据库数据导出excel
- 将数据在[Excel]和[任何数据源]之间导入导出_可临时保存查询结果
- plsql导出查询数据到excel
- 数据库数据导出Excel
- 把数据库里面的stu表中的数据,导出到excel中
- delhi从数据库导出数据生成Excel并自动发送邮件笔记
- EXCEL导入数据库及数据库数据导出到EXCEL
- 从数据库导出数据到word、excel、.txt
- 数据库中数据导出到Excel文件中