|
環(huán)境和所需包: 1,JDK1.5 2,poi-3.5-FINAL-20090928.jar, poi-contrib-3.5-FINAL-20090928.jar, poi-ooxml-3.5-FINAL-20090928.jar, poi-scratchpad-3.5-FINAL-20090928.jar, log4j-1.2.13.jar, commons-logging-1.1.jar, junit-3.8.1.jar, dom4j-1.6.1.jar, geronimo-stax-api_1.0_spec-1.0.jar, ooxml-schemas-1.0.jar, xmlbeans-2.3.0.jar
注意 : 1,可能有些包不需要,沒有測試,因?yàn)橛行┌?xiàng)目中已經(jīng)存在了 2,我開始少了最后2個(gè)包,報(bào): Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/xmlbeans/XmlException
Java代碼:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class POIExcelDemo {
public static void read(String fileName) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(fileName);
read(wb);
}
public static void read(InputStream is) throws Exception {
XSSFWorkbook wb = new XSSFWorkbook(is);
read(wb);
}
public static void read(XSSFWorkbook xwb) throws Exception {
try {
for (int k = 0; k < xwb.getNumberOfSheets(); k++) {
XSSFSheet sheet = xwb.getSheetAt(k);
int rows = sheet.getPhysicalNumberOfRows();
for (int r = 0; r < rows; r++) {
// 定義 row
XSSFRow row = sheet.getRow(r);
if (row != null) {
int cells = row.getPhysicalNumberOfCells();
for (short c = 0; c < cells; c++) {
XSSFCell cell = row.getCell(c);
if (cell != null) {
String value = null;
switch (cell.getCellType()) {
case XSSFCell.CELL_TYPE_FORMULA:
value = "FORMULA ";
break;
case XSSFCell.CELL_TYPE_NUMERIC:
if(HSSFDateUtil.isCellDateFormatted(cell)){
value = "DATE value="
+ cell.getDateCellValue();
}else{
value = "NUMERIC value="
+ cell.getNumericCellValue();
}
break;
case XSSFCell.CELL_TYPE_STRING:
value = "STRING value="
+ cell.getStringCellValue();
break;
case XSSFCell.CELL_TYPE_BOOLEAN:
value = "BOOLEAN value="
+ cell.getBooleanCellValue();
cell.getDateCellValue();
break;
default:
}
System.out.println(value);
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
File f = new File("d:/Test.xlsx");
FileInputStream is = new FileInputStream(f);
System.out.println(f.getName());
read(is);
}
}
寫完之后完把文件改成讀取test.xls(Excel2003),發(fā)現(xiàn)出現(xiàn)Exception in thread "main" org.apache.poi.openxml4j.exceptions.InvalidOperationException: Can't open the specified file: 'C:\DOCUME~1\CHENXI~1\LOCALS~1\Temp\poifiles\poi-ooxml-1966473540.tmp'
所以為了兼容讀取2003,我把代碼給成如下:
|
|
|