无法从Excel读取'java.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCell无法强制转换为java.lang.S
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法从Excel读取'java.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCell无法强制转换为java.lang.S相关的知识,希望对你有一定的参考价值。
我正在尝试自动化一个网站,我试图从Excel中读取数据并在文本框中一个接一个地输入数据。
我正在使用'org.apache.poi'版本3.12。但是,当我尝试从excel输入数据时,我得到“java.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCell无法转换为java.lang.String”错误。在google上搜索以下错误时,我发现我们需要使用'DataFormatter'来格式化Cell。即使在使用DataFormatter之后,我仍然会看到以下错误。
从excel读取的代码如下
public static ArrayList iterateCells(String sheetName) {
// Array List to store the excel sheet data
ArrayList excelData = new ArrayList();
DataFormatter formatter = new DataFormatter();
try {
FileInputStream userDetailsFile = new FileInputStream("D:\userLoginDetails.xls");
HSSFWorkbook wb = new HSSFWorkbook(userDetailsFile);
//Retrieve the first sheet of the workbook.
//HSSFSheet excelSheet = wb.getSheetAt(0);
int index = wb.getSheetIndex(sheetName);
Sheet sheet = wb.getSheetAt(index);
// Iterate through the sheet rows and cells.
// Store the retrieved data in an arrayList
Iterator rows = sheet.rowIterator();
while (rows.hasNext()) {
HSSFRow row = (HSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext()) {
HSSFCell cell = (HSSFCell) cells.next();
DataFormatter df = new DataFormatter();
df.formatCellValue(cell);
excelData.add(cell);
}
}
} catch(IOException ex) {
ex.printStackTrace();
}
return excelData;
}
我将代码输入网页的代码如下。
@Test(dependsOnMethods="AddCardioExerciseForTheDay")
public void AddStrengthExerciseForTheDay() throws Exception {
engineDriver.landingPageAfterLoggingIn.addExerciseAfterLoggingIn();
List colData = new ArrayList();
colData = wte.iterateCells("DataSheet");
String exerciseType = (String) colData.get(1);
engineDriver.exercisePage.selectStrengthExercise(exerciseType);
engineDriver.exercisePage.goToAddFoodPage();
}
有人能指出我哪里出错了。谢谢!!
编辑:我收到以下行中的错误
String exerciseType = (String) colData.get(1);
堆栈跟踪:
java.lang.ClassCastException: org.apache.poi.hssf.usermodel.HSSFCell cannot be cast to java.lang.String
at com.myfitnesspal.tests.MfpExerciseLoggingTest.AddStrengthExerciseForTheDay(MfpExerciseLoggingTest.java:107)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:643)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:782)
at org.testng.TestRunner.run(TestRunner.java:632)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:366)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319)
at org.testng.SuiteRunner.run(SuiteRunner.java:268)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1169)
at org.testng.TestNG.run(TestNG.java:1064)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:132)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:236)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:81)
在单元格上使用getStringCellValue()
将其内容作为String。
在你的情况下,我认为它应该是:
String exerciseType = colData.get(1).getStringCellValue();
见:apache poi cell documentation
以上是关于无法从Excel读取'java.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCell无法强制转换为java.lang.S的主要内容,如果未能解决你的问题,请参考以下文章
android java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 0 列
无法读取文档:无法从 START_OBJECT 令牌中反序列化 java.lang.String 的实例
嗨,我不知道如何修复此游标错误,“java.lang.IllegalStateException:无法从 CursorWindow 读取第 0 行,第 1 列。”
java,poi读取excel单元格为空的数据,出现空指针异常:java.lang.NullPointerException
Java 读取Excel2007 jar包冲突的问题(org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetExcepti