如何通过java程序实现对excel的读取?

目前,比较常用的实现Java导入、导出Excel的技术有两种:POI和jxl
我一开始用的也是POI,但导入POI的包总是导入不成功,后来导包成功了又出现了各种其他的错误,最后用jxl才成功实现,这里将两种方法都记下:
一、POI
1.下载POI的官方网站:
http://poi.apache.org/download.html
下载的时候有bin文件和src文件,我感觉一般下的都是bin文件,下面导入POI的方法也是针对下载bin文件来的。
2.如何导入POI: 在这里插入图片描述
3.在网上找代码时,发现有用HSSF编写的,也有XSSF编写的,然后就搜了一下两者的区别:HSSF是POI工程对Excel 97(-2007)文件操作的纯Java实现,XSSF是POI工程对Excel 2007 OOXML (.xlsx)文件操作的纯Java实现。

二、jxl
1.下载jxl的网址:http://www.java2s.com/Code/Jar/j/Downloadjxl26jar.htm
文件夹中只有一个文件: 在这里插入图片描述
2.导入jxl:
右击自己需要导入excel的项目,选择NEW→Folder,输入文件夹名称lib,然后将下载下来的jxl的包复制到lib中,然后再右键单击项目,选择Properties,在左侧列表里选中Java Build Path ,右侧选中Libraries,点击Add JARS,选择jxl包中lib文件夹下的所有文件。
导包的时候如果项目文件夹的图标上出现了感叹号就说明导包不成功,基本上程序也会报错。之前导POI的时候就是因为导包没有成功,所以选择用jxl来进行操作,按照上面的步骤导包成功。
3. 注意用jxl只能对扩展名为xls的文件进行操作,也就是2003—2007版本的excel,如果不是还需要进行转换。
4.然后运行代码如下:这两个代码是我在网上找的能够实现的:
代码一:
import java.io.File;
import java.io.FileInputStream;

import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;

public class Test5 {
/**
* 读取xls文件内容
* @param file 想要读取的文件对象
* @return 返回文件内容
*/
public static String xls2String(File file){
String result = “”;
try{
FileInputStream fis = new FileInputStream(file);
StringBuilder sb = new StringBuilder();
jxl.Workbook rwb = Workbook.getWorkbook(fis);
Sheet[] sheet = rwb.getSheets();
for (int i = 0; i < sheet.length; i++) {
Sheet rs = rwb.getSheet(i);
for (int j = 0; j < rs.getRows(); j++) {
Cell[] cells = rs.getRow(j);
for(int k=0;k<cells.length;k++)
sb.append(cells[k].getContents()+" “);
sb.append(”\n");
}
}
fis.close();
result += sb.toString();
}catch(Exception e){
e.printStackTrace();
}
return result;
}

public static void main(String[] args){
 File file = new File("D:\\workbook.xls");
    //System.out.println(Test5.class.getResource("/"));//输出文件路径
    System.out.println(xls2String(file));
}

}

代码二:
import java.io.File;
import java.io.FileInputStream;
//import java.io.InputStream;

import jxl.Cell;
import jxl.CellType;
import jxl.Sheet;
import jxl.Workbook;
import jxl.write.Label;

public class Test3 {

public static void main(String[] args) {
jxl.Workbook readwb = null;
try
{
//构建Workbook对象, 只读Workbook对象
//直接从本地文件创建Workbook
FileInputStream instream = new FileInputStream(“D:\workbook.xls”); readwb = Workbook.getWorkbook(instream);
//Sheet的下标是从0开始
//获取第一张Sheet表
Sheet readsheet = readwb.getSheet(0);
//获取Sheet表中所包含的总列数
int rsColumns = readsheet.getColumns();
//获取Sheet表中所包含的总行数
int rsRows = readsheet.getRows();
//获取指定单元格的对象引用
for (int i = 0; i < rsRows; i++) {
for (int j = 0; j < rsColumns; j++) {
Cell cell = readsheet.getCell(j, i);
System.out.print(cell.getContents() + " ");
}
System.out.println();
}
//利用已经创建的Excel工作薄,创建新的可写入的Excel工作薄
jxl.write.WritableWorkbook wwb = Workbook.createWorkbook(new File(
“D:\工作簿2.xls”), readwb);
//读取第一张工作表
jxl.write.WritableSheet ws = wwb.getSheet(0);
//获得第一个单元格对象
jxl.write.WritableCell wc = ws.getWritableCell(0, 0);
//判断单元格的类型, 做出相应的转化
if (wc.getType() == CellType.LABEL)
{
Label l = (Label) wc;
l.setString(“新姓名”);
}
//写入Excel对象
wwb.write();
wwb.close();
} catch (Exception e) {
e.printStackTrace();
} finally {
readwb.close();
}
}
}

最后,虽然导包成功了,但在运行程序的时候还是会报错,报错原因是找不到指定文件,也在网上搜了一下,说要安装在bin文件夹下,与class文件放在一起,但是放过去之后,发现还是找不到文件,最后按照老师说的,不用中文命名,将文件名由“工作薄.xls”换成了“workbook.xls”,然后文件就找到了,所以以后在涉及到程序处理的命名时尽量还是用英文命名吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值