Excel的数据导入到数据库中出现的两个问题及解决方案

来源:互联网 发布:ctp 行情数据 编辑:程序博客网 时间:2024/06/06 07:31

     今天要把Excel中的数据导入到数据库中,写了段代码,出现两个问题,解决方法如下。

问题一:程序报错,报错如下,原因是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就导不进去了,读取excel的数据打印出来看到有几条数据是乱码。随后检查excel中的内容,看到有些字段内容后面有空格,把空格去掉后,导入正常。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 贞子从电视里爬出来怎么办 2个月的婴儿吓到怎么办 排卵日同房了没避孕怕怀孕怎么办 妻子因为我欺骗她要跟我离婚怎么办 老婆用苹果手机共享我的位置怎么办 孕妇餐后2小时血糖偏高怎么办 孕妇血糖餐后2小时数值高怎么办 股市退市的话股民的钱怎么办 美股股票退市了手里的股票怎么办 坐高铁安检时怕把包包弄坏了怎么办 很贵的包包高铁安检怎么办 如果过高铁安检东西被扣留怎么办 邻居家小孩把我家东西弄坏了怎么办 邻居早上6点放音乐扰民怎么办 隔壁楼邻居天天放音乐很吵怎么办 发现老公在卧室安了摄像头怎么办 憋的尿又没有厕所的时候怎么办 一岁宝宝拉屎总是拉出血怎么办 孩子鼻窦炎鼻子堵有白色鼻涕怎么办 家里阳台上老是有蝙蝠趴着怎么办 空调太冷在空调房里该怎么办 分手了怎么办不要挽回要重新吸引 过敏体质没打疫苗的孩子入学怎么办 遇到不认识的小姐姐问我问题怎么办 小孩孑脖子洛忱了痛怎么办 挤奶把乳腺挤肿了不出奶怎么办 遇到好兄弟在背后捅刀子怎么办 面对出轨还不想离婚的老公怎么办 法院执行局把案划错了不承认怎么办 手机nfc功能被手机壳挡住怎么办 飞信短信登录验证码达到上限怎么办 手机自带短信软件没了怎么办 老婆出轨孩子又3个不知道怎么办 骑电动车摔跤小脚趾疼有点肿怎么办 第一次太疼了有心理阴影了怎么办 天梭机械表调了时间忽然慢怎么办 支付宝信用住到酒店没房间怎么办 拳头打在硬上骨头肿了怎么办 领导决策出现了失误你该怎么办 我的直销团队走到瓶颈了怎么办 孕妇8个月便秘大便带血怎么办