一.JAVA使用POI读取EXCEL文件的简单model
1.所需要的jar
poi-3.7-20101029.jar
poi-examples-3.7-20101029.jar
poi-ooxml-3.7-20101029.jar
poi-ooxml-schemas-3.7-20101029.jar
poi-scratchpad-3.7-20101029.jar
poi-3.6.jar
poi-3.6-dom4j-1.6.1.jar
poi-3.6-geronimo-stax-api_1.0_spec-1.0.jar
poi-3.6-xmlbeans-2.3.0.jar
poi-3.6-ooxml-20091214.jar
poi-3.6-ooxml-schemas-20091214.jar
package poi; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.Iterator; import org.apache.poi.hssf.usermodel.HSSFCell; 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 ReadExcel001 { public static void main(String[] args) { readXml("D:/test.xlsx"); System.out.println("-------------"); readXml("d:/test2.xls"); } public static void readXml(String fileName){ boolean isE2007 = false; //判断是否是excel2007格式 if(fileName.endsWith("xlsx")) isE2007 = true; try { InputStream input = new FileInputStream(fileName); //建立输入流 Workbook wb = null; //根据文件格式(2003或者2007)来初始化 if(isE2007) wb = new XSSFWorkbook(input); else wb = new HSSFWorkbook(input); Sheet sheet = wb.getSheetAt(0); //获得第一个表单 Iterator<Row> rows = sheet.rowIterator(); //获得第一个表单的迭代器 while (rows.hasNext()) { Row row = rows.next(); //获得行数据 System.out.println("Row #" + row.getRowNum()); //获得行号从0开始 Iterator<Cell> cells = row.cellIterator(); //获得第一行的迭代器 while (cells.hasNext()) { Cell cell = cells.next(); System.out.println("Cell #" + cell.getColumnIndex()); switch (cell.getCellType()) { //根据cell中的类型来输出数据 case HSSFCell.CELL_TYPE_NUMERIC: System.out.println(cell.getNumericCellValue()); break; case HSSFCell.CELL_TYPE_STRING: System.out.println(cell.getStringCellValue()); break; case HSSFCell.CELL_TYPE_BOOLEAN: System.out.println(cell.getBooleanCellValue()); break; case HSSFCell.CELL_TYPE_FORMULA: System.out.println(cell.getCellFormula()); break; default: System.out.println("unsuported sell type"); break; } } } } catch (IOException ex) { ex.printStackTrace(); } } }
二.经典例子,读取Excel 2003数据
package testExcelFile; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class test2 { public static void main(String[] args) throws IOException { String path = "c:/test.xls"; List<List<String>> bList= readExcel(path); for(List<String> sList : bList){ for(String str : sList){ System.out.print(str+" "); } System.out.println(); } } public static List<List<String>> readExcel(String path) throws IOException{ InputStream is = new FileInputStream(path); HSSFWorkbook work = new HSSFWorkbook(is); List<List<String>> result = new ArrayList<List<String>>(); for(int numSheet =0;numSheet<work.getNumberOfSheets();numSheet++){ HSSFSheet sheet = work.getSheetAt(numSheet); if(sheet == null){ continue; } for(int rowNum = 1;rowNum<sheet.getLastRowNum();rowNum++){ HSSFRow row = sheet.getRow(rowNum); int minCol = row.getFirstCellNum(); int maxCol = row.getLastCellNum(); List<String> rowList = new ArrayList<String>(); for(int colInd = minCol;colInd<maxCol;colInd++){ HSSFCell cell = row.getCell(colInd); if(cell == null){ continue; } rowList.add(cell.getStringCellValue()); } result.add(rowList); } } return result; } }
注:XSSFWorkbook是excel 2007 ,HSSFWorkbook是excel 2003 ,
原文:http://www.cnblogs.com/cxxjohnson/p/5325256.html