运行导入 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"/>   <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; } } }
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"/>   <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; } } }
解决方案 »
- jsp上传文件问题
- SSH集成问题:org.springframework.beans.factory.BeanDefinitionStoreException
- 一个关于弹出新页面的问题
- 【急】项目部署的问题
- mqsql4.1数据库获取/录入数据出现乱码
- Jsp自定义标签访问struts2+spring+hibernate问题
- 如何解决Spring和struts整合时出现的Servlet action is not available
- 编译出现错误,帮忙看看少哪一个包????????????
- 新手问:CMP能否实现数据的更新操作?
- 怎么样能让jb5下面的例子:jbuilder5\samples\Ejb\ESite\ESite.jpx运行起来?
- script无法弹出alert窗口
- 关于读取txt文件的问题。
传入的是InputStream