A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 曲佳奇 中级黑马   /  2014-4-7 14:27  /  966 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 曲佳奇 于 2014-4-7 14:37 编辑

如题 有没有人能给个思路  或者是样例什么的 感谢..

3 个回复

倒序浏览
apache有一个开源框架,叫POI,专门用来读写office文档的,你可以百度了解一下使用方法,不是很难,http://poi.apache.org/
回复 使用道具 举报
xietansheng 发表于 2014-4-7 14:49
apache有一个开源框架,叫POI,专门用来读写office文档的,你可以百度了解一下使用方法,不是很难,http:// ...

嗯  谢谢  我去查一查
回复 使用道具 举报
关于Java读取Excel2007的文章在Google、百度上搜索一下,没有太好的例子,实现的也不算太好。查看了一下Poi,最新的 POI 3.5 beta 4 支持读写 Excel2007和PPT2007(XLSX and PPTX),自己来实现Java读取Excel2007了。



1,下载 POI 3.5 beta 4 解压,把其中的jar包导入项目文件。
没有配置 log4j,测试时报告警报信息,应该为加载顺序导致的初始化问题造成(暂时没有找原因)。



2,建立读取 Excel2007 方法
1.// 构造 XSSFWorkbook 对象,strPath 传入文件路径  
2.XSSFWorkbook xwb = new XSSFWorkbook(strPath);  
3.// 读取第一章表格内容  
4.XSSFSheet sheet = xwb.getSheetAt(0);  
5.// 定义 row、cell  
6.XSSFRow row;  
7.String cell;  
8.// 循环输出表格中的内容  
9.for (int i = sheet.getFirstRowNum(); i < sheet.getPhysicalNumberOfRows(); i++) {  
10.    row = sheet.getRow(i);  
11.    for (int j = row.getFirstCellNum(); j < row.getPhysicalNumberOfCells(); j++) {  
12.        // 通过 row.getCell(j).toString() 获取单元格内容,  
13.        cell = row.getCell(j).toString();  
14.        System.out.print(cell + "\t");  
15.    }  
16.    System.out.println("");  
17.}
此过程直接传入文件所在路径,其他一些过程已经被自动实现。



3,测试,文件为8列3563行数据,以文本方式读取内容,
1.public static void main(String[] args) {  
2.    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");  
3.    TimeZone t = sdf.getTimeZone();  
4.    t.setRawOffset(0);  
5.    sdf.setTimeZone(t);  
6.    Long startTime = System.currentTimeMillis();  
7.    String fileName = "F:\\我的文档\\学生缴费代码.xlsx";  
8.    // 检测代码  
9.    try {  
10.        PoiReadExcel er = new PoiReadExcel();  
11.        // 读取excel2007  
12.        er.testPoiExcel2007(fileName);  
13.    } catch (Exception ex) {  
14.        Logger.getLogger(FastexcelReadExcel.class.getName()).log(Level.SEVERE, null, ex);  
15.    }  
16.    Long endTime = System.currentTimeMillis();  
17.    System.out.println("用时:" + sdf.format(new Date(endTime - startTime)));  
18.}  
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马