Excel的数据导入到数据库中出现的两个问题及解决方案
2013-01-28 18:00
676 查看
今天要把Excel中的数据导入到数据库中,写了段代码,出现两个问题,解决方法如下。
问题一:程序报错,报错如下,原因是excel中用了筛选,且有标题头,去掉即可。
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:224)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at com.comtop.log.ImportExcel.main(ImportExcel.java:20)
Caused by: java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.poi.hssf.record.UnknownRecord.<init>(UnknownRecord.java:62)
at org.apache.poi.hssf.record.SubRecord.createSubRecord(SubRecord.java:57)
at org.apache.poi.hssf.record.ObjRecord.fillFields(ObjRecord.java:99)
at org.apache.poi.hssf.record.Record.fillFields(Record.java:90)
at org.apache.poi.hssf.record.Record.<init>(Record.java:55)
at org.apache.poi.hssf.record.ObjRecord.<init>(ObjRecord.java:61)
... 10 more
Exception in thread "main" org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance, the following exception occured: null
at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:237)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at com.comtop.log.ImportExcel.main(ImportExcel.java:20)
问题二:原本是800条数据,导到512[b]条就导不进去了,读取excel的数据打印出来看到有几条数据是乱码。随后检查excel中的内容,看到有些字段内容后面有空格,把空格去掉后,导入正常。[/b]
问题一:程序报错,报错如下,原因是excel中用了筛选,且有标题头,去掉即可。
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; 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 ImportExcel { public static String filePath = "D://20130128.xls"; public static void main(String[] args) { try { // 创建对Excel工作簿文件的引用 FileInputStream file = new FileInputStream(filePath); HSSFWorkbook wookbook = new HSSFWorkbook(new FileInputStream(filePath)); // 在Excel文档中,第一张工作表的缺省索引是0 // 其语句为:HSSFSheet sheet = workbook.getSheetAt(0); HSSFSheet sheet = wookbook.getSheetAt(0); //获取到Excel文件中的所有行数 int rows = sheet.getPhysicalNumberOfRows(); //遍历行 for (int i = 0; i < rows; i++) { // 读取左上端单元格 HSSFRow row = sheet.getRow(i); // 行不为空 if (row != null) { //获取到Excel文件中的所有的列 int cells = row.getPhysicalNumberOfCells(); String value = ""; //遍历列 for (int j = 1; j < 7; j++) { //获取到列的值 HSSFCell cell = row.getCell((short)j); if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_FORMULA: break; case HSSFCell.CELL_TYPE_NUMERIC: value += cell.getNumericCellValue() + ","; break; case HSSFCell.CELL_TYPE_STRING: value += cell.getStringCellValue() + ","; break; default: value += cell.getStringCellValue() + " "; break; } } } System.out.println(i+" "+value); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } }
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:224)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at com.comtop.log.ImportExcel.main(ImportExcel.java:20)
Caused by: java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at org.apache.poi.hssf.record.UnknownRecord.<init>(UnknownRecord.java:62)
at org.apache.poi.hssf.record.SubRecord.createSubRecord(SubRecord.java:57)
at org.apache.poi.hssf.record.ObjRecord.fillFields(ObjRecord.java:99)
at org.apache.poi.hssf.record.Record.fillFields(Record.java:90)
at org.apache.poi.hssf.record.Record.<init>(Record.java:55)
at org.apache.poi.hssf.record.ObjRecord.<init>(ObjRecord.java:61)
... 10 more
Exception in thread "main" org.apache.poi.hssf.record.RecordFormatException: Unable to construct record instance, the following exception occured: null
at org.apache.poi.hssf.record.RecordFactory.createRecord(RecordFactory.java:237)
at org.apache.poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:160)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:163)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:210)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:191)
at com.comtop.log.ImportExcel.main(ImportExcel.java:20)
问题二:原本是800条数据,导到512[b]条就导不进去了,读取excel的数据打印出来看到有几条数据是乱码。随后检查excel中的内容,看到有些字段内容后面有空格,把空格去掉后,导入正常。[/b]
相关文章推荐
- 数据库导入excel数据出现问题解决方案
- 如何导入excel数据到数据库,并解决导入时间格式问题
- 外部数据文件导入数据库的时候出现中文乱码的问题
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
- java 实现Excel数据导入数据库时,中文乱码问题
- DELPHI中利用AdvStringGrid往数据库中导入数据出现的问题
- 关于SSIS从Excel导入数据出现问题,字母加数字,变为NULL
- Java导入excel大量数据出现内存溢出解决方案
- SSIS和sql server 导入Excel数据到数据库中数据出现null
- 比对两个字段同时相等时判定为重复,移除list重复数据,excel导入与数据库比对
- Excel数据导入ArcGIS中出现的投影问题解决方案
- java实现EXCEL数据导入到数据库中的格式问题的解决
- 将Excel 导入数据库时提示数据长度过长的问题.
- ASP.NET(C#)Excel导入Dataset的出现数据值丢失问题
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案,总有一款适合你!
- ASP.NET实现Excel导入SQL数据库以及各种出现的问题解决方案
- asp.net<Web版> ---将excel表数据导入到数据库问题<一>---未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0” 提供程序
- 两个可将Excel文件数据导入到数据库中的开源项目
- [Asp.net]常见数据导入Excel,Excel数据导入数据库解决方案
- [置顶] 关于C++、C#实现EXCEL数据库批量导入数据库万行以上数据效率问题