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

it2022-05-05  145

目前,比较常用的实现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”,然后文件就找到了,所以以后在涉及到程序处理的命名时尽量还是用英文命名吧。


最新回复(0)