POI版本:3.5beat(前面的版本只能操作2003,不兼容2007)
1. Jar包导入项目lib文件夹下.
2. 创建ExcelOperation类:
package test;
//import org.apache.poi.hssf.model.Workbook;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelIO {
/**
*读取Excel
*/
public static String readExcel() throws IOException{
/**
*POI提供了对2003和2007的访问接口,分别是HSSFWorkbook和XSSFWorkbook
*为了兼容2003和2007,这里选择它们的共同接口,而不是自己的具象类
*切记,是org.apache.poi.ss.usermodel下的接口,
*不是org.apache.poi.hssf.model下的具象类
*/
Workbook wk = null; //Excel对象
Sheet sheet = null; //表对象
Row row = null; //行对象
Cell cell = null; //单元格对象
try {
//d盘根目录有一个123.xslx的Excel文档,先读2007,如果出现异常
//就是2003,在进行2003的处理
wk = new XSSFWorkbook("D:/123.xlsx");// 2007
}catch (Exception ex) {
try {
//2003的对象需要一个输入流
wk = new HSSFWorkbook(new FileInputStream("D:/123.xls"));// 2003
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
//获取第一张表
sheet =wk.getSheetAt(0);
//获取第一行
row=sheet.getRow(0);
//获取第一个单元格
cell=row.getCell(0);
/**
*单元格中不同的数据类型,读取的方法也不同
*例如:字符类型使用getStringCellValue();
*数字类型使用getNumericCellValue()---返回double;
*其他数据类型的操作方法参考API,这里只做入门级别的操作..
*/
//String value=cell.getStringCellValue();
String value=cell.getNumericCellValue()+"";
/**
*下面是进行对数据的修改,但是一修改,Excel就打不开了.不清楚为什么,有待研究...
*/
//RichTextString text=null;
//text=new XSSFRichTextString("update");
//cell.setCellValue(text);
//cell.setCellValue("update");
//FileOutputStream fileOut = new FileOutputStream("D:/123.xlsx");
//wk.write(fileOut);fileOut.close();
return value;
}
public static void main(String[] args) {
try {
System.out.println(readExcel());
} catch (IOException e) {
e.printStackTrace();
}
}
}