Excel 데이터를 데이터베이스로 가져오는 두 가지 문제 및 해결 방안
5066 단어 java 기초
문제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의 내용을 검사하면 일부 필드의 내용 뒤에 빈칸이 있는 것을 보고 빈칸을 제거한 후 정상적으로 가져옵니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Java 네트워크 프로그래밍의 UDP 서버 및 클라이언트 프로그램서버: 클라이언트: UDP: 클라이언트를 열어 데이터를 받을 때까지 기다린 다음 서버를 열어 데이터를 보냅니다....
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.