由于最近要用到Excel数据导入数据库,在网上查了一下,目前一般使用jxl 或 poi。
---------jxl----------------
下载地址:http://sourceforge.net/projects/jexcelapi/files/
如果你的JDK是1.5,jxl是2.6读写excel时,会出现java.lang.UnsupportedClassVersionError: Bad version number in .class file异常,jxl2.6要求jdk1.6 .
简单测试例子(附件):
package com.run.jxl;
import java.io.IOException;
import java.io.InputStream;
import jxl.Cell;
import jxl.Sheet;
import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.read.biff.BiffException;
import org.junit.Test;
public class JxtTest1 {
@Test
public void test1() throws BiffException, IOException {
// InputStream is = new FileInputStream("D:/user.xls");
InputStream is = JxtTest1.class.getClassLoader().getResourceAsStream("test.xls");
jxl.Workbook rwb = Workbook.getWorkbook(is);
Sheet rs = (Sheet) rwb.getSheet(0);
Cell c00 = ((jxl.Sheet) rs).getCell(0, 0);
String strc00 = c00.getContents();
System.out.println("Cell(0, 0)" + " value : " + strc00 + "; type : " + c00.getType());
}
@Test
public void test2() throws Exception{
InputStream is = JxtTest1.class.getClassLoader().getResourceAsStream("test.xls"); //加载文件
jxl.Workbook rwb = Workbook.getWorkbook(is); //创建Workbook(术语:工作薄)
Sheet rs = (Sheet) rwb.getSheet(0); //取得第一张工作表
Cell c00 = rs.getCell(0,0); //取得第一个单元格,注意这里是(column,row)
String str00 = c00.getContents(); //第一行第一列的值,
System.out.println(str00);
Cell c01 = rs.getCell(1,0);
String str01 = c01.getContents();
System.out.println(str01);
rwb.close();
}
@Test
public void test3() throws Exception{
InputStream is = JxtTest1.class.getClassLoader().getResourceAsStream("test.xls"); //加载文件
WorkbookSettings workbooksetting = new WorkbookSettings();
workbooksetting.setEncoding("GBK");
jxl.Workbook rwb = Workbook.getWorkbook(is,workbooksetting);
Sheet[] s = rwb.getSheets();
for(Sheet sh : s){
int rows = sh.getRows();
for(int i = 0;i < rows; i++){
Cell[] cells = sh.getRow(i);
for(int j = 0; j<cells.length;j++){
System.out.print(cells[j].getContents() + " ");
}
System.out.println();
}
}
rwb.close();
}
}