- 浏览: 298508 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
Mybeautiful:
袁光平 写道您好我设置了html格式,但是邮件中的超链接还是不 ...
JavaMail发送html格式的邮件 -
袁光平:
您好我设置了html格式,但是邮件中的超链接还是不能正常显示为 ...
JavaMail发送html格式的邮件 -
springmvc_springjpa:
java程序语言学习教程 地址http://www.zuida ...
Java学习这七年 -
月光照着我:
谢谢~~~
如何阅读源代码 -
nocb:
我还是建议博主,要把知识面放宽一些, 各种语音 和框架都了解一 ...
Java学习这七年
经常会碰到把数据存到excel的需求,虽然使用POI写起来确实不算复杂,但每次都写近乎一样的代码有点烦躁,下面是我经常用到的代码,满足一般的要求,高级的excel操作没有用到,不过应该已经满足了大部分的要求。
需引入的jar包如下,
poi-2.5.1-final-20040804.jar
poi-contrib-2.5.1-final-20040804.jar
poi-scratchpad-2.5.1-final-20040804.jar
1. Excel类,代表一个Excel对象,里面可以包含很多sheet, 已经相关必要方法,
package stony.zhang.excel; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class Excel { private boolean override; private String file; HSSFWorkbook wb = new HSSFWorkbook(); List<ExcelSheet> sheets = new ArrayList<ExcelSheet>(); private HSSFCellStyle titleStyle; /** * file, the file with the full path, If can't find,then new one. * * @param file */ public Excel(String file) { this(file, false); } public Excel(String file, boolean override) { this.file = file; this.override = override; File f=new File(file); if (override) { // delete the exsited one } try { if(f.exists()){ wb= new HSSFWorkbook(new FileInputStream(file)); }else{ wb= new HSSFWorkbook(); } titleStyle = wb.createCellStyle(); HSSFFont titleFont = wb.createFont(); // titleFont.setColor(HSSFFont.COLOR_RED); titleFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); titleStyle.setFont(titleFont); // create the Excel file. int num=wb.getNumberOfSheets(); for (int i = 0; i < num; i++) { HSSFSheet sheet = wb.getSheetAt(i); String name=wb.getSheetName(i); sheets.add(new ExcelSheet(name,sheet,titleStyle)); } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } /** * @author Stony Zhang * @date Feb 23, 2009 * @param sheetName * If can't find the sheet, new one. * @return */ public ExcelSheet getSheet(String sheetName) { for (ExcelSheet esh : this.sheets) { if (esh.getName().equalsIgnoreCase(sheetName)) { return esh; } } HSSFSheet sheet = wb.createSheet(sheetName); return new ExcelSheet(sheetName, sheet,titleStyle); } public void save() { try { FileOutputStream fileOut = new FileOutputStream(file); wb.write(fileOut); fileOut.close(); } catch (Exception e) { // TODO: handle exception } } public static void main(String[] argv){ Excel ex=new Excel("E:/test.xls"); ExcelSheet esh=ex.getSheet("log"); esh.setHeader(new String[]{"User","Table Name","Database","Action Type","Opration Time"}); esh.addRecord(new String[]{"aa","bb","cc","dd","ee"}); ex.save(); } }
2.ExcelSheet类,代表一个具体sheet.
package stony.zhang.excel; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; /** * @author Stony Zhang * @date Feb 23, 2009 * @return */ public class ExcelSheet { private HSSFSheet sheet; private String name; private String[] header; private HSSFCellStyle titleStyle; public ExcelSheet(String sheetName, HSSFSheet sh) { this.name = sheetName; this.sheet = sh; sheet.setDisplayGridlines(true); } public ExcelSheet(String sheetName, HSSFSheet sh,HSSFCellStyle titleStyle) { this.name = sheetName; this.sheet = sh; this.titleStyle=titleStyle; } // public ExcelSheet(){ // this(name); // } public void addRecord(String[] record) { if(header!=null){ if(header.length!=record.length){ return; } } fillContent(record,sheet.getLastRowNum()+1,null); } public String[] getHeader() { return this.header; } public void setHeader(String[] header) { this.header=header; fillContent(header,0,this.titleStyle); } private void fillContent(String[] crow, int rowNum, HSSFCellStyle style) { HSSFRow row = sheet.createRow((short) rowNum); for (int i = 0; i < crow.length; i++) { String s = crow[i]; HSSFCell cell = row.createCell((short) i); if(style!=null){ cell.setCellStyle(style); } cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(s); } } public void setValue(int rowNum,int colNum,String value){ HSSFRow row=this.sheet.getRow(rowNum); HSSFCell cell=row.getCell((short)colNum); if (cell==null){ cell = row.createCell((short) colNum); } cell.setEncoding(HSSFCell.ENCODING_UTF_16); cell.setCellValue(value); } public String getName() { // TODO Auto-generated method stub return this.name; } public void addRecord(ArrayList<String[]> arr) { for (String[] row : arr) { this.addRecord(row); } } public List<String[]> getRecords(){ ArrayList<String[]> vs=new ArrayList<String[]>(); for (int j = 0; j < this.sheet.getLastRowNum(); j++) { HSSFRow row=this.sheet.getRow(j); ArrayList<String> cellsStr = new ArrayList<String>(); for (short k = 0; k < row.getLastCellNum(); k++) { HSSFCell cell=row.getCell(k); if(cell!=null){ cellsStr.add(cell.getStringCellValue()); } } System.out.println("row=" + j + " values=" + cellsStr.toArray(new String[0])); vs.add(cellsStr.toArray(new String[0])); } return vs; } public List<String> getAllValuesOfColum(short i) { ArrayList<String> vs=new ArrayList<String>(); for (int j = 1; j <= this.sheet.getLastRowNum(); j++) { HSSFRow row=this.sheet.getRow(j); HSSFCell cell=row.getCell(i); vs.add(cell.getStringCellValue()); } return vs; } }
使用Excel类中Main方法可以测试一下,各个方法就不介绍了,都很简单。欢迎各位提出改进意见。
发表评论
-
网页抓取之新方法 (在java程序中使用jQuery)
2012-03-07 13:57 11681你想要的任何信息,基本上在互联网上存在了,问题是如 ... -
也说递归
2011-12-23 11:41 1399递归算法是程序员的最重要的基本功之一,也是相对 ... -
编码的依据是什么?
2011-09-21 15:11 1421编码的依据是什么?很多人也许是不假思索就回答“需求!” ... -
jvisualvm结合jstatd进行远程监控
2011-08-31 16:33 7976jvisualvm是Jdk自带的,具体点,据说是 ... -
Visitor模式通俗化
2011-08-29 14:12 162823种设计模式中,最难理解的可能就是Visitor ... -
如何阅读源代码
2011-08-24 14:03 10731众所周知,要想 ... -
废话Log4j
2011-07-26 11:41 1502使用Log4j去管理日志多年了,基本每次都是按照前 ... -
使用Cobra解析html, 及其提取table内容的例子。
2011-04-07 09:40 2286以下方法读取一个html格式的String,然后把其中 ... -
MD5加密及随机数生成
2011-02-25 11:19 3784今天贴两个简单的方法,需要的时候不用自己再写, ... -
我不知道何谓动态绑定
2010-10-22 16:01 1266CSDN有一贴问何谓 ... -
得到当前系统中所有线程的办法
2010-09-27 11:15 1725有时候我们希望找到系统中的所有线程,有没有什么办法呢? ... -
从源头上捕获线程中产生的异常
2010-09-26 18:01 1317我们经常碰到线程突然死掉,但是又找不到原因,总不能在每 ... -
Java 读取本机IP地址
2010-08-19 12:35 1809今天要跟大家分享的是,一个读取本机ip地址的方法。 ... -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
2010-07-14 11:35 1609先看一下技术背景:Inte ... -
Quartz配置...
2010-06-18 08:58 1288关于cronExpression的介绍: 字段 允许值 允许 ... -
封装好的类,使用httpClient访问网页。
2010-06-10 13:13 2140做了好几个httpclient访问网站的项目了,我发布 ... -
使用Server转发的聊天程序 (短小精悍,无重复代码, 支持多客户端)
2010-05-05 10:51 3208Server 入口程序, 仅一个类,其中 hsCli ... -
论接口与抽象类的真正区别
2010-03-30 21:54 5335关于接口与抽象类的区别, 有着千篇一律的答案, ... -
Java学习之路拾遗
2010-01-30 13:12 1214学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一 ... -
Java学习之路(三)
2010-01-29 20:48 1125...
相关推荐
通过以上步骤,你可以使用Apache POI有效地操作Excel模板,并将数据填充到新生成的文件中。这在报表生成、数据分析、批量导出等方面非常实用。记得在实际项目中,还要处理异常、优化性能,比如使用缓冲流、避免频繁...
这个"POI操作Excel代码,及架包,完整详细例子"的资源包含了实现这一功能所需的全部组件。 首先,我们要了解HSSF和XSSF。HSSF是POI项目中的一个子项目,用于处理老版的Excel文件格式(.xls),即BIFF8格式。而XSSF...
在Java开发中,我们经常使用POI库来处理Excel数据,如读取、写入和修改Excel文件。本篇文章将详细介绍如何使用JAVA POI导出Excel。 一、准备工作 在开始编写代码前,确保已经添加了Apache POI库到项目的依赖管理中...
Apache POI是一个强大的Java库,专门用于处理...通过lib.rar和Poi02.rar中的示例代码,你可以更深入地了解和学习POI操作Excel的具体实现。在实践中,结合这些资源,你将能够熟练地在Java Web项目中集成Excel处理功能。
2. **使用Apache POI加载Excel**:然后,使用POI的HSSFWorkbook或XSSFWorkbook类打开Excel文件。根据你的Excel文件类型,选择对应的API。例如,如果你正在处理的是.xlsx文件,那么应该使用XSSFWorkbook。 3. **插入...
在封装POI操作Excel的过程中,反射可能被用来动态地创建对象,调用方法,或访问私有成员,这使得代码更具灵活性和可扩展性。例如,可以使用反射动态地根据Excel工作表的列名创建对应的Java对象属性,或者在不知道...
标题中的"java通过poi操作excel jar包"指的是使用Apache POI库来处理Excel文件的Java程序,通常需要引入特定版本的POI JAR包。在这个案例中,我们有两个版本的JAR包可供使用:poi_3.17.jar和poi_3.15.jar。这些版本...
Java的Apache POI库是一个强大的工具,用于读取、创建和修改Microsoft Office格式的文件,尤其是Excel(.xlsx)文档。...这个压缩包中的“EexcelChart”可能是示例代码、测试数据或生成的Excel文件,供用户参考和实践。
标题中的“poi操作excel案例”指的是使用Apache POI库来处理Excel文件的示例项目。Apache POI是一个开源的Java库,它允许开发者创建、修改和显示Microsoft Office格式的文件,包括Excel工作簿(XLS和XLSX)。在这个...
这个"poi操作excel的Demo"很可能是提供了一个使用Apache POI库来读取、写入或修改Excel文件的示例代码。下面将详细介绍Apache POI在处理Excel时的一些关键知识点。 1. **Apache POI概述**: Apache POI 是Java平台...
poi操作excel java源代码分享
在IT行业中,Apache POI是一个广泛使用的库,它允许开发者在Java环境中创建、修改和读取Microsoft Office格式的文件,尤其是Excel文档。本教程将详细讲解如何利用Apache POI库来实现“使用POI向Excel模板动态添加...
可能包含了数据库连接的配置、SQL查询的测试、POI操作Excel的单元测试等。 在实际应用中,我们还需要考虑性能优化,比如使用PreparedStatement防止SQL注入,批量插入数据以减少数据库交互次数,以及合理设置内存...
总结,Apache POI提供了一套完整的API,使得在Java中操作Excel文件变得简单。通过循环读取数据和应用模板,我们可以快速生成大量定制化的Excel报告。在"poiDemo2"这个示例中,你可以找到具体实现这些步骤的代码,...
在“poi操作excel表格导入和导出”这个主题中,我们将深入探讨如何利用Apache POI进行Excel数据的处理,包括导入和导出。 一、Apache POI简介 Apache POI是一个开源项目,它提供了API来处理Microsoft Office格式的...
在"POI操作excel的java源代码与所需要的jar包poi3.0.1"中,我们聚焦于使用Apache POI 3.0.1版本来创建和读取Excel文件。这个压缩包包含以下内容: 1. `poi-3.0.1-FINAL-20070705.jar`:这是Apache POI的核心库文件...
在IT行业中,Apache POI是一个广泛使用的库,它允许开发者使用Java来...以上就是关于"poi操作excel"的详细解释,包括使用SpringBoot、MyBatis和MySQL实现Excel的上传下载功能。希望这个知识体系能对你的项目有所帮助。
在本文中,我们将深入探讨如何使用POI进行Excel的读写操作,并进行总结。 1. POI基本概念 Apache POI 提供了HSSF(Horrible Spreadsheet Format)用于读写旧版的.xls格式的Excel文件,而XSSF则用于处理.xlsx格式的...
5. **poi-examples**: 包含了使用Apache POI API的示例代码,可以帮助开发者理解如何实际操作Excel文件。 6. **poi-excelant**: 提供了用于构建和执行Ant任务的工具,这些任务与Excel操作有关,例如创建或处理Excel...
下面将详细介绍如何使用Java POI来操作Excel以及相关的知识点。 1. **基本概念** - HSSF(Horrible Spreadsheet Format):这是POI库处理Excel 97-2003(.xls)格式的部分。HSSF提供了一套API,可以创建、修改和...