Excel 데이터를 데이터베이스로 가져오는 두 가지 문제 및 해결 방안

5066 단어 java 기초
오늘 Excel의 데이터를 데이터베이스에 가져오려고 세그먼트 코드를 썼는데 두 가지 문제가 발생했습니다. 해결 방법은 다음과 같습니다.
문제1: 프로그램 오류, 오류는 다음과 같습니다. 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.(HSSFWorkbook.java:163)  at org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:210)  at org.apache.poi.hssf.usermodel.HSSFWorkbook.(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.(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.(Record.java:55)  at org.apache.poi.hssf.record.ObjRecord.(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.(HSSFWorkbook.java:163)  at org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:210)  at org.apache.poi.hssf.usermodel.HSSFWorkbook.(HSSFWorkbook.java:191)  at com.comtop.log.ImportExcel.main(Import Excel.java:20)문제2: 원래는 800개의 데이터였는데 512개의 데이터로 도출되지 않았습니다. excel의 데이터를 읽고 출력해 보니 몇 개의 데이터가 난자입니다.다음에 excel의 내용을 검사하면 일부 필드의 내용 뒤에 빈칸이 있는 것을 보고 빈칸을 제거한 후 정상적으로 가져옵니다.

좋은 웹페이지 즐겨찾기