- 浏览: 294297 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 11637你想要的任何信息,基本上在互联网上存在了,问题是如 ... -
也说递归
2011-12-23 11:41 1354递归算法是程序员的最重要的基本功之一,也是相对 ... -
编码的依据是什么?
2011-09-21 15:11 1384编码的依据是什么?很多人也许是不假思索就回答“需求!” ... -
jvisualvm结合jstatd进行远程监控
2011-08-31 16:33 7917jvisualvm是Jdk自带的,具体点,据说是 ... -
Visitor模式通俗化
2011-08-29 14:12 156223种设计模式中,最难理解的可能就是Visitor ... -
如何阅读源代码
2011-08-24 14:03 10647众所周知,要想 ... -
废话Log4j
2011-07-26 11:41 1466使用Log4j去管理日志多年了,基本每次都是按照前 ... -
使用Cobra解析html, 及其提取table内容的例子。
2011-04-07 09:40 2248以下方法读取一个html格式的String,然后把其中 ... -
MD5加密及随机数生成
2011-02-25 11:19 3747今天贴两个简单的方法,需要的时候不用自己再写, ... -
我不知道何谓动态绑定
2010-10-22 16:01 1216CSDN有一贴问何谓 ... -
得到当前系统中所有线程的办法
2010-09-27 11:15 1672有时候我们希望找到系统中的所有线程,有没有什么办法呢? ... -
从源头上捕获线程中产生的异常
2010-09-26 18:01 1276我们经常碰到线程突然死掉,但是又找不到原因,总不能在每 ... -
Java 读取本机IP地址
2010-08-19 12:35 1755今天要跟大家分享的是,一个读取本机ip地址的方法。 ... -
TCP实现P2P通信、TCP穿越NAT的方法、TCP打洞
2010-07-14 11:35 1571先看一下技术背景:Inte ... -
Quartz配置...
2010-06-18 08:58 1235关于cronExpression的介绍: 字段 允许值 允许 ... -
封装好的类,使用httpClient访问网页。
2010-06-10 13:13 2078做了好几个httpclient访问网站的项目了,我发布 ... -
使用Server转发的聊天程序 (短小精悍,无重复代码, 支持多客户端)
2010-05-05 10:51 3153Server 入口程序, 仅一个类,其中 hsCli ... -
论接口与抽象类的真正区别
2010-03-30 21:54 5263关于接口与抽象类的区别, 有着千篇一律的答案, ... -
Java学习之路拾遗
2010-01-30 13:12 1179学习最大的天敌就是忘记,所以我想把我这几年的学习的东西,一点一 ... -
Java学习之路(三)
2010-01-29 20:48 1077...
相关推荐
POI操作Excel生成水印,该水印其实就是一个图片,该代码是将文字生成图片,再将图片变成水印的。
apache的poi操作excel 例子中有完整的架包,详细的注解
poi操作excel java源代码分享
poi操作EXCEL大全,包含对EXCEL的各种操作及具体代码等
poi方法创建excel poi方法读取excel 所需的 poi3.0.1 jar包
使用poi上传下载excel,包含springboot+mybatis+mysql+poi
excelPOI 操作代码 学习使用
HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。 三、 ...
利用poi对excel模板的新追加指定的行数,可以复制模板的某一行,包含样式。获取数据,往excel模板写入。包括各种对excel复制的操作,改变样式等等。集合很多对excel的操作的代码。都是工程实践用的。
java操作excel中,用poi创建excel的方法
poi操作excel文件的源代码 主要包括4个函数 1、poiWrite 向excel文件写入“姓名”两个字 2、poiWriteCopy 读取一个指定文件内容,写入另一个文件; 3、poiCopy2 读取指定路径文件,指定sheet,指定行、指定单元格...
用Java输出图表的场景和这个一样,POI、JXL对操作Excel图表无能为力 但Excel支持脚本的,也有工作表载入事件,所以也可以用同样的原理实现 只不过这次客户端不再是浏览器而是Excel应用程序。 这样交代的应该比较...
用poi方法读取excel中单元格内容的源代码
通过实例代码,帮助大家掌握POI操作excel2003,2007调用的方法名不同,但基本类似。
java代码通过poi操作excel文件,支持一个文件多个sheet生成
在项目中,经常免不了要导入、导出Excel,导出Excel稍微简单点,制作一张模板,然后将查询之后的数据写入到模板中即可,导出程序可以做到...我们应该想办法解决这个问题,减少每次导入Excel时都去拷贝粘贴相同的代码。
jar包包含: commons-collections4-4.1.jar, poi-3.15.jar, poi-ooxml-3.15.jar, poi-ooxml-schemas-3.15.jar, xmlbeans-2.5.0.jar
JAVA操作excel,word文档,07版本和07以下的版本, 有自己初次学习编写的源代码,通俗易懂,适合新手学习。 JAVA中的POI操作EXCEL,包含了POI用的几个JAR包 和学习源代码
通过代码,详细介绍使用Apache 2008-12-01发布的poi包,实现Excel2007的操作。
java+poi+excel读取写入等操作所有jar(最新支持excel2013)+poi-bin-3.10-beta2-20130904源代码学习