样例程序如下所示,其中:
parseXls()函数依赖于jxl,只能读取xls格式文件;
parseExcel()函数依赖于apache poi,能够读取xls和xlsx两种格式的文件。
jxl的依赖:
net.sourceforge.jexcelapi
jxl
2.6.12
apache poi的依赖:
org.apache.poi
poi
3.10-FINAL
org.apache.poi
poi-ooxml
3.10-FINAL
示例代码:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
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.xssf.usermodel.XSSFWorkbook;
import jxl.Sheet;
import jxl.Workbook;
public class ExcelParser {
public List> parseXls(File file) {
try {
Workbook workbook = Workbook.getWorkbook(file);
Sheet sheet = workbook.getSheet(0);
List> list = new ArrayList>();
for (int i = 0; i < sheet.getRows(); i++) {
List rowList = new ArrayList();
for (int j = 0; j < sheet.getColumns(); j++) {
rowList.add(sheet.getCell(j, i).getContents());
}
list.add(rowList);
}
// test
for (List rowList : list) {
for (String s : rowList)
System.out.print(s + ",");
System.out.println();
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public List> parseExcel(File file) {
try {
InputStream fis = new FileInputStream(file);
String fileName = file.getName();
org.apache.poi.ss.usermodel.Workbook workbook = null;
if (fileName.toLowerCase().endsWith("xlsx")) {
workbook = new XSSFWorkbook(fis);
} else if (fileName.toLowerCase().endsWith("xls")) {
workbook = new HSSFWorkbook(fis);
}
org.apache.poi.ss.usermodel.Sheet sheet = workbook.getSheetAt(0);
List> list = new ArrayList>();
Iterator rowIterator = sheet.iterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
List rowList = new ArrayList();
Iterator cellIterator = row.cellIterator();
while (cellIterator.hasNext()) {
Cell cell = cellIterator.next();
switch(cell.getCellType()) {
case Cell.CELL_TYPE_NUMERIC:
rowList.add("" + cell.getNumericCellValue());
break;
case Cell.CELL_TYPE_STRING:
default:
rowList.add(cell.getStringCellValue());
break;
}
}
list.add(rowList);
}
// test
for (List rowList : list) {
for (String s : rowList)
System.out.print(s + ",");
System.out.println();
}
return list;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void main(String[] args) {
new ExcelParser().parseExcel(new File("C:\\Users\\zifeiy\\Documents\\zifeiy.xlsx"));
}
}