最近无聊,把n年前写了半截的记事本翻出来,完成后,就想着能不能把excel,word中文字也读出来?过程中遇到了很多问题,网上找了找,自己玩了下,终于搞定,现在我的记事本能读一半的txt、excel、word,当然为了保持记事本的简洁性,读出的word、excel只有单纯的文本信息,有时间再完善吧。现在把这些东西整理下,为了我写起来方便,大家读起来简洁,此篇先说java操作EXCEL吧。
java操作excel网上普遍的说法是有两种方式:JExcel和POI。我只尝试了第一种。JExcel是Java Excel的缩写,一个开源项目,用它程序员可以读取、创建、更新Excel文件。官方网站:http://jexcelapi.sourceforge.net/ 去看看更新和下载相应的jar包,不过官网很不稳定,反正我从那里没下到,确实需要的朋友去网上找找,还是很多的,也可以联系我。
1.解压下到的jexcelapi压缩包,里面有jar包jxl.jar。将其引用至你的项目,方法有很多,我就不说了。其他文件就是一些例子,api帮助文档等等。
2.开始书写你的程序。
用的方法也很简单,总的来说就是,获取上传excel文档的路径,根据路径创建工作簿。然后按sheet页,行,列,去取每个cell单元格中的值,存到你想存的位置就ok了。
3.看下代码,应该就很清楚了吧。
//获取上传文件的路径
FileDialog fd = new FileDialog(jf,"打开",FileDialog.LOAD);//打开上传文档对话框,jf是我定义的JFrame
fd.setVisible(true);
String file_dir = fd.getDirectory() + fd.getFile();//这就是要获取的路径了,如:"C:\新建.txt"
//根据路径实例化文件
File file = new File(file_dir);
//转为excel工作簿
Workbook book = Workbook.getWorkbook(file); //Workbook 是jxl.jar中的,需要引入它
Sheet[] sheets = book.getSheets();//取工作簿中每个sheet页,将其存数这样的数组中。
Sheet sheet = sheets[i];//得到具体的一页
int row = sheet.getRows();//获取每页的行数
Cell[] cells = sheet.getRow(j);//获取一行中的多个单元格
cells [j]; //具体的一个单元格
下来对数据怎样操作就随你了。
这里我只描述了读文件操作,至于更复杂的,相信到了这里也就可以自己琢磨了吧。
哈哈,给张效果图,读取excel的效果:
Java操作Excel 实现教程