-1
下面的代码是读取一个大的Excel文件。我得到了“无法从org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch的数字单元格中获取文本值”错误。我该如何解决。列1是数值,列2是字符串值。阅读Excel行和列
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFCell;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.Vector;
public class ReadExcel {
public static void main(String[] args) throws Exception {
String filename = "C:/Documents and Settings/oemiola/My Documents/Defects_Input.xls";
FileInputStream fis = null;
try {
fis = new FileInputStream(filename);
HSSFWorkbook workbook = new HSSFWorkbook(fis);
HSSFSheet sheet = workbook.getSheetAt(0);
Iterator rowIter = sheet.rowIterator();
while(rowIter.hasNext()){
HSSFRow myRow = (HSSFRow) rowIter.next();
Iterator cellIter = myRow.cellIterator();
Vector<String> cellStoreVector=new Vector<String>();
while(cellIter.hasNext()){
HSSFCell myCell = (HSSFCell) cellIter.next();
String cellvalue = myCell.getStringCellValue();
cellStoreVector.addElement(cellvalue);
}
String firstcolumnValue = null;
String secondcolumnValue = null;
int i = 0;
firstcolumnValue = cellStoreVector.get(i).toString();
secondcolumnValue = cellStoreVector.get(i+1).toString();
insertQuery(firstcolumnValue,secondcolumnValue);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (fis != null) {
fis.close();
}
}
}
private static void insertQuery(String firstcolumnvalue,String secondcolumnvalue) {
System.out.println(firstcolumnvalue + " " +secondcolumnvalue);
}
}
我会说...不要尝试读取数字单元格作为字符串。也许使用'getNumericCellValue()'... –
你也可以发布错误的日志? – yams
错误是:线程“main”中的异常java.lang.IllegalStateException:无法从数字单元中获取文本值 \t at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:643) \t在org.apache.poi.hssf.usermodel.HSSFCell.getRichStringCellValue(HSSFCell.java:720) \t在org.apache.poi.hssf.usermodel.HSSFCell.getStringCellValue(HSSFCell.java:703) \t在READEXCEL。主(ReadExcel.java:34) – user2539273