- 浏览: 132499 次
- 性别:
- 来自: 安徽
文章分类
生成Excel效果图如下:
package com.kjlink.util; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.Method; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; public class HSSFUtil { private HSSFWorkbook workbook = null; // Excel工作簿 private HSSFSheet sheet = null; private HSSFRow row = null; private HSSFCell cell = null; private HSSFCellStyle style = null; private HSSFFont font = null; private List<?> list = null; private String[] header = null; // 标题行 private String[][] body =null; // body内容 private String[] properties = null; // List集合中的对象属性名集合 private static HSSFUtil hssf = new HSSFUtil(); public static final String FILE_PATH = "D:\\领还记录.xls"; private HSSFUtil() { this.workbook = new HSSFWorkbook(); this.sheet = workbook.createSheet("sheet1"); this.style = workbook.createCellStyle(); this.font = workbook.createFont(); } public void exportExcel(String[] header,List<?> list, String[] properties) { this.header = header; this.list = list; this.properties = properties; this.createHead(); this.createBody(); this.writeXls(); System.out.println("生成Excel成功!"); } private void createHead() { // Excel格式头 if (header!=null&&header.length>0) { row = sheet.createRow(0); for (int i = 0; i<header.length; i++) { sheet.setColumnWidth(i, 5000); cell = row.createCell(i); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(header[i]); this.defaultStyle(); this.defaultFont(); cell.setCellStyle(this.style); } } } private void createBody() { if (this.listToArray()!=null) { int lastnum = sheet.getLastRowNum(); for (int i = 0; i < body.length; i++) { row = sheet.createRow(++lastnum); for (int j = 0; j < body[i].length; j++) { cell = row.createCell(j); cell.setCellType(HSSFCell.CELL_TYPE_STRING); cell.setCellValue(body[i][j]); } } } } private void writeXls() { FileOutputStream out = null; try { out = new FileOutputStream(FILE_PATH); workbook.write(out); } catch (IOException e) { throw new RuntimeException(e); } finally { if (out!=null) { try { out.flush(); out.close(); } catch (IOException e) { throw new RuntimeException(e); } } } } private void defaultStyle () { style.setFillForegroundColor(HSSFColor.BLUE_GREY.index); style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); } private void defaultFont () { font.setColor(HSSFColor.WHITE.index); font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); style.setFont(font); } private String[][] listToArray() { if (list!=null&&!list.isEmpty()) { if (properties!=null&&properties.length>0) { body = new String[list.size()][properties.length]; // 二维数组Body for (int i = 0; i < body.length; i++) { for (int j = 0; j < body[i].length; j++) { Object obj = list.get(i); // 获取当前对象 Class<?> clzz = obj.getClass(); // 获取当前对象的Clas对象 try { String getterName = properties[j]; if (getterName.indexOf(".")!=-1) { // getter名称为【对象.属性】 String[] subPro = getterName.split("\\."); String subName = null; Object subObj = obj; // 子对象 for (int k = 0; k < subPro.length; k++) { subName = "get" + firstWordUpper(subPro[k]); Method method = subObj.getClass().getDeclaredMethod(subName); if (!method.isAccessible()) { subObj = method.invoke(subObj); if (subObj==null) break; if (k==subPro.length-1) { body[i][j] = subObj.toString(); } } } } else { // getter名称为【属性】 getterName = "get" + firstWordUpper(properties[j]); // getter方法名 Method method = clzz.getDeclaredMethod(getterName); // 获取指定方法名的Method对象 if(!method.isAccessible()) { // 表示该方法可以访问 修饰符不是private Object value = method.invoke(obj); // 调用obj对象的getter方法 if (value!=null) { if (value instanceof java.sql.Timestamp||value instanceof java.util.Date) { body[i][j] = timeToStr(value); } else { body[i][j] = value.toString(); } } } } } catch (Exception e) { throw new RuntimeException(e); } } } } } return body; } private String firstWordUpper(String word) { if (word!=null&&word.length()>1) { return word.substring(0,1).toUpperCase() + word.substring(1); } return word; } private String timeToStr(Object obj) { if (obj!=null) { SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); return sdf.format(obj); } return null; } public static void main(String[] args) { List<Consum> list = new ArrayList<Consum>(); Consum consum1 = new Consum(); consum1.setAsset(new Asset("KJ-AA-0001")); consum1.setUser(new User("小兵")); consum1.setOperator(new User("信息中心")); consum1.setDate(new Date()); consum1.setRemark("去北京出差"); Consum consum2 = new Consum(); consum2.setAsset(new Asset("KJ-AA-0002")); consum2.setUser(new User("博海")); consum2.setOperator(new User("信息中心")); consum2.setDate(new Date()); consum2.setRemark("去上海出差"); list.add(consum1); list.add(consum2); String[] header = new String[] {"固定资产名称","领用人","操作人","领用日期","备注"}; String[] properties = new String[] {"asset.name", "user.name", "operator.name", "date", "remark"}; hssf.exportExcel(header, list, properties); } }
- POI_HSSF_-_Excel实例_110724.zip (3.4 KB)
- 下载次数: 22
发表评论
-
Apache commons简介
2012-08-07 14:43 918原文引自:http://www.blogjava.net ... -
Java Runtime
2011-12-12 13:39 1359关于java runtime.exec() 的讲解 ... -
正则表达式参考大全
2011-08-19 16:25 870^\d+$ //匹配非负整数(正整数 + 0) ... -
JDK环境变量的配置
2011-08-18 10:35 744原文引自:一路悠扬-51CTO技术博客JDK环境变量配置的步骤 ... -
iText生成PDF - 实例
2011-07-24 10:18 2297iText是著名的开放源 ... -
c3p0 apparent deadlock / creating emergency threads
2011-07-15 16:47 3592Code: 2005-09-06@06:29:12.38 ... -
高阶Java枚举类型enum使用详解
2011-06-01 10:23 1618java的Enum枚举类型终于在j2se1.5出现了。之前觉得 ... -
斯坦福大学公开课:编程方法学
2011-05-21 11:38 1055介绍了当代程序设计基本思想:面向对象,模块化,封装 ... -
采用CAS原理构建单点登录
2011-05-07 09:45 1092企业的信息化过程 ... -
HttpClient入门
2011-05-07 09:40 993HttpClient简介 HTTP 协议可能是现在 I ... -
分页代码
2011-05-07 09:29 881法一:使用hibernate框架分页。 接口如下: pu ... -
Comet:基于 HTTP 长连接的“服务器推”技术
2011-05-07 09:22 886周 婷 (mailto:zhouting@cn.ibm.com ... -
程序员必知15件事
2011-05-07 09:00 756作为程序员,要取得非凡成就需要记住的15件事。 1.走一条不 ... -
初学者如何开发出高质量J2EE系统
2011-05-06 12:22 732J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种 ... -
J2EE学习中一些值得研究的开源项目
2011-05-06 12:21 664这篇文章写在我研究J2SE ... -
Java IO浅析
2011-05-06 12:19 437什么是流: 流是一个抽象的概念。当Java程序需要从数 ... -
字符串数组与字符串之间的互转(join/split)
2011-05-06 11:56 114091、Java 1-1、字符串数组=>字符串: ... -
JSON与JAVA的数据转换
2011-05-06 11:52 807JSON-lib这个Java类包用于把bean,map和XML ... -
[Java][JavaScript]字符串数组与字符串之间的互转(join/split)
2011-05-06 11:43 21、Java 1-1、字符 ...
相关推荐
在Java编程中,当你需要处理Excel文件时,Apache POI库提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)两个主要组件,分别用于处理老版本的.xls和新版本的.xlsx文件。在这个实例中,...
Apache POI是一个流行的开源库,允许开发者处理Microsoft Office格式的文件,如Word、Excel和PowerPoint。POI-TL是POI的一个扩展,专门用于处理Word文档(.docx格式),提供了更高级的功能,如模板填充和文档合并。 ...
- **poi-3.8-20120326.jar**:核心库,提供了对HSSF(用于旧版Excel .xls)和XSSF(用于新版Excel .xlsx)的支持。 - **poi-ooxml-schemas-3.8-20120326.jar**:包含了Office Open XML的XML模式,用于解析和创建...
Apache POI 提供了HSSF和XSSF两个主要组件,分别用于处理旧版的BIFF8格式(Excel 97-2003,.xls)和基于XML的新版格式(Excel 2007及以上,.xlsx)。这些组件允许开发者创建、修改和解析Excel工作簿、工作表、单元格...
- HSSF(Horrible Spreadsheet Format)是Apache POI用于处理旧版Excel文件(.xls,97-2003格式)的API。 - XSSF(XML Spreadsheet Format)是用于处理新版Excel文件(.xlsx,2007及以上版本)的API。XSSF基于...
poi解密excel文件实例代码.zip是java使用poi解密excel文件的实例代码,代码只实现了.xls类型的excel,.xlsx类型的excel只需把HSSF前缀的类更换成XSSF开通的前缀类即可。 本代码所实现的解密是指使用密码解密,不是...
首先,我们需要了解POI的主要组件:HSSF(Horrible Spreadsheet Format)用于处理旧版的BIFF格式(.xls),而XSSF则用于处理XML-based OpenOffice Spreadsheet格式(.xlsx)。这两个组件都提供了丰富的API,可以操作...
在这个“poi 解析excel实例”中,我们主要关注的是如何使用Apache POI来解析Excel文件。 首先,让我们了解一下什么是Apache POI。Apache POI 是Java平台上处理Microsoft Office文档的库,它允许开发者创建、修改和...
本实例源码着重讲解如何利用Apache POI来实现数据的Excel导出功能。 首先,我们需要了解Apache POI的基本概念。POI提供了HSSF(Horrible Spreadsheet Format)和XSSF(XML Spreadsheet Format)两个主要的API,分别...
HSSF是POI项目最早的API,适用于旧版Excel97-2007格式,而XSSF则支持从Excel2007引入的XML格式。 在使用Apache POI时,你需要了解以下关键概念: 1. **Workbook**:这是表示整个Excel文件的顶级对象。无论文件是...
- **HSSF**:处理Excel的BIFF格式,如老版本的.XLS文件。 - **XSSF**:处理Excel的OOXML格式,如较新的.XLSX文件。 - **HWPF**:处理Word的DOC文件。 - **XWPF**:处理Word的DOCX文件。 - **HSLF**:处理PowerPoint...
1. **HSSF (Horrible Spreadsheet Format):** 这是Apache POI项目中处理旧版Microsoft Excel (97-2003)文件(.xls)的部分。HSSF提供了创建、读取和修改.xls文件的类和接口。 2. **XSSF (XML Spreadsheet Format):*...
import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.*; import java.io.FileOutputStream; import java.io.IOException; public class ExcelExporter { public static void...
【基于Struts2 Spring iBatis POI开发的导出Excel实例详解】 在现代Web应用程序中,导出数据到Excel格式是一种常见的需求,这有助于用户分析、存储或共享信息。本实例将详细介绍如何利用Struts2、Spring和iBatis...
- **组件**:Apache POI包括HSSF(Horrible Spreadsheet Format)用于处理老版的.BIFF格式(Excel 97-2007),XSSF(XML Spreadsheet Format)用于处理.xlsx格式,HWPF(Horrible Word Processor Format)处理Word...
其中,HSSF(Horizontally Split Formatted)是POI库的一个子项目,主要负责处理老版本的Excel文件,即.BIFF8格式的Excel 97-2007文件。在本文中,我们将深入探讨POI HSSF 3.2版本中的核心概念和操作API。 首先,`...
1. **HSSF和XSSF**: POI提供了两个主要的API,用于处理Excel文件。HSSF(Horrible Spreadsheet Format)是用于读写老版本的Microsoft Excel 97-2003格式(.xls)的API。而XSSF(XML Spreadsheet Format)则支持较新...
Apache POI 是基于 Office Open XML 标准(OOXML)和 ...本代码实例是使用java语言写的poi解密excel文件实例代码,代码只实现了.xls类型的excel,.xlsx类型的excel只需把HSSF前缀的类更换成XSSF开通的前缀类即可。
1. **读取Excel文件**:POI提供了HSSF(Horrible Spreadsheet Format)API来处理.xls格式的Excel文件,XSSF API则用于处理.xlsx格式的文件。通过这些API,开发者可以访问单元格内容、样式、公式等,并将数据解析为...