背景:
上一篇写到利用jtds连接数据库获取对应的数据,本篇写怎样用poi将数据到处到excel中,此程序为Application
正文:
第三方poi jar包:poi驱动包下载
代码片段:
/** * 将数据导出到excel中 * @param data 将要被导入到excel中的数据 * @throws IOException */ public void crateTempFile(ArrayList<LinkedHashMap<String, String>> data) throws IOException { //建立一个excel工作簿 HSSFWorkbook wb = new HSSFWorkbook(); //建立一个sheet HSSFSheet sheet = wb.createSheet("test"); //建立一个单元格样式 HSSFCellStyle commonTitileStyle = wb.createCellStyle(); //建立一个字体样式 HSSFFont font=wb.createFont(); //设置字体颜色 font.setColor(HSSFColor.RED.index);//HSSFColor.VIOLET.index //字体颜色 //设置字体的大小 font.setFontHeightInPoints((short)12); //字体增粗 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); //将字体样式放入单元格样式中 commonTitileStyle.setFont(font); //建立一行 HSSFRow titleRow = sheet.createRow(0); Map<String, String> titleMap = data.get(0); Set<String> keySet = titleMap.keySet(); Iterator<String> it = keySet.iterator(); //sheet中行索引值 int indexOfRow = 0; //建立第一行第一个单元格 HSSFCell titileCell = titleRow.createCell(indexOfRow); String titilKey = "測试測试(6072)"; //设置单元格宽度 sheet.setColumnWidth(indexOfRow, 20 * 256); //给单元格赋值 titileCell.setCellValue(titilKey); //设置单元格样式 titileCell.setCellStyle(commonTitileStyle); indexOfRow = 1; //设置sheet第二行 HSSFRow dataRow = sheet.createRow(indexOfRow); while (it.hasNext()) { //遍历建立第二行单元格格式 HSSFCell cell1 = dataRow.createCell(indexOfRow-1); String key1 = it.next(); //将数据库表中的字段名改为改动成excel中的须要的标题名称 key1 = dbColumnNameToExcelColumnName(key1); sheet.setColumnWidth(indexOfRow, 20 * 256); cell1.setCellValue(key1); indexOfRow++; } //设置第三行 indexOfRow = 2; for (Map<String, String> temp : data) { HSSFRow titleRow1 = sheet.createRow(indexOfRow); Set<String> set = temp.keySet(); Iterator<String> it1 = set.iterator(); int indexOfColumn = 0; while (it1.hasNext()) { String key = it1.next(); if (key.equals("anchor_name") || key.equals("send_gift_user_name") || key.equals("add_date")) { String value = temp.get(key); if (key.equals("add_date")) { Date d = new Date(Long.valueOf(value)); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); value = sdf.format(d); } HSSFCell cell = titleRow1.createCell(indexOfColumn); cell.setCellValue(value); } else { long value = Long.valueOf(temp.get(key)); HSSFCell cell = titleRow1.createCell(indexOfColumn); cell.setCellValue(value); } indexOfColumn++; } indexOfRow++; } FileOutputStream fos = new FileOutputStream(new File("D://test//" + new Random().nextInt(100) + ".xls")); wb.write(fos); fos.close(); }
效果:
在D: est中建立一个excel文件,当中的样式为:
体会:
主要利用poi将数据导出excel。详细步骤是:
1.先建立一个excel工作簿,在建立一个sheet,
2.在建立的sheet中设置每一行每个列的值。
详细的样式问题,能够查看poi提供的API文档