zoukankan      html  css  js  c++  java
  • java利用poi导出数据到excel

    背景:

    上一篇写到利用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文档


  • 相关阅读:
    脚本 页面截取
    net Email 发送(借助第三方)
    查询表、存储过程、触发器的创建时间和最后修改时间(转)
    ActionScript简介
    mysql 1064 USING BTREE问题
    浅谈SQL SERVER函数count()
    程序员学习能力提升三要素
    构建杀手级应用的 JavaScript 框架、工具和技术
    javascript刷新页面方法大全
    html页<![if IE]>...<![endif]>使用解说
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4375521.html
Copyright © 2011-2022 走看看