运行导入 2003 的没问题   导入 2007 的报错。org.apache.xmlbeans.SchemaTypeLoaderException: XML-BEANS compiled schema: Incompatible minor version - expecting up to 23, got 24 (schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.index) - code 3
at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl$XsbReader.<init>(SchemaTypeSystemImpl.java:1522)
at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.initFromHeader(SchemaTypeSystemImpl.java:260)
at org.apache.xmlbeans.impl.schema.SchemaTypeSystemImpl.<init>(SchemaTypeSystemImpl.java:183)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.loadTypeSystem(Unknown Source)
at schemaorg_apache_xmlbeans.system.sE130CAA0A01A7CDE5A2B4FEB8B311707.TypeSystemHolder.<clinit>(Unknown Source)
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:25)
at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:122)
at java.lang.reflect.Field.acquireFieldAccessor(Field.java:918)
at java.lang.reflect.Field.getFieldAccessor(Field.java:899)
at java.lang.reflect.Field.get(Field.java:358)
at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:770)
at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument.<clinit>(Unknown Source)
at org.openxmlformats.schemas.drawingml.x2006.main.ThemeDocument$Factory.parse(Unknown Source)
at org.apache.poi.xssf.model.ThemesTable.<init>(ThemesTable.java:39)
......代码如下:JSP页面代码:<input type="file" name="fileName" id="myfile"/> &nbsp <input type="submit" value="导入" onclick="importExcel()"/>/**
 * 
 * 储存到对应的信息中。
 * 
 * @param sheet
 *            org.apache.poi.ss.usermodel.Sheet;工作薄。
 * 
 * @return
 */ private List<Map<String, String>> getData(Sheet sheet) { List<Map<String, String>> ls = new ArrayList<Map<String, String>>(); Iterator<Row> rows = sheet.iterator();// 行集合 Iterator<Cell> cell; // 得到每行的列集合. Cell c; // 接收每一列。 int type; // 用于接收单元格的所属类型。 String k = ""; // 用于接收每个单元格的数据。 int j = 0; // 用于设置主键的。 Map<String, String> str; // 用于接收每列的数据。 while (rows.hasNext()) { // 遍历所有的行. str = new HashMap<String, String>();// 产生对对象。 cell = rows.next().iterator(); // 得到每行的列集合。 while (cell.hasNext()) { c = cell.next(); // 得到单元格信息 type = c.getCellType(); // 得到单元格数据类型 switch (type) { // 判断数据类型 case Cell.CELL_TYPE_BLANK: k = ""; break; case Cell.CELL_TYPE_BOOLEAN: k = c.getBooleanCellValue() + ""; break; case Cell.CELL_TYPE_ERROR: k = c.getErrorCellValue() + ""; break; case Cell.CELL_TYPE_FORMULA: k = c.getCellFormula(); break; case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(c)) {
k = new DataFormatter().formatRawCellContents(c
.getNumericCellValue(), 0, "yyyy-mm-dd");// 格式化日期
} else {
k = String.valueOf(Math.round(Double.valueOf(c
.getNumericCellValue())));
} break; case Cell.CELL_TYPE_STRING: k = c.getStringCellValue(); break; default: break; } str.put(String.valueOf((j++)), k); // 赋值。 System.out.print(k + "\t"); } if (!str.isEmpty()) { // 判断是不是为空 ls.add(str); } System.out.println(); } return ls; } /**
 * 
 * 读取 excel 1997-2007版本 表格信息。
 * 
 * @return
 * @throws IOException
 */ public List<Map<String, String>> readEcelFile() throws IOException { System.out.println(filePath); Workbook book = null; int i = 0; try { InputStream instream = new FileInputStream(new File(filePath));// 得到流. book = new HSSFWorkbook(instream); // excel97版本以前的 i = 1; } finally { if (i == 0) {
book = new XSSFWorkbook(filePath); // excel2007版本的  ()-----------   在这一行报错------------------------------------
} if (book != null) { return getData(book.getSheetAt(0)); } else { return null; } } }