2017-03-13 11 views
0

を表示されている私は私のウェブサイトを自動化しようとしていますExcel &からデータを読み込もうとすると、テキストボックスに次々にデータが入力されます。「とjava.lang.ClassCastException:org.apache.poi.hssf.usermodel.HSSFCellはjava.lang.Stringでにキャストすることはできませんが」とエクセルから読み取ることができません

私は 'org.apache.poi' バージョン3.12を使用しています。私はExcelからデータを入力しようとしているときしかし、私は「とjava.lang.ClassCastExceptionを:org.apache.poi.hssf.usermodel.HSSFCellはjava.lang.Stringでにキャストすることはできません」取得エラー。 googleで以下のエラーを検索すると、私は、 'DataFormatter'を使ってセルをフォーマットする必要があることが分かりました。 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(); 
} 

誰かが間違っていると私に指摘できますか?ありがとう!!

EDIT:私は次の行

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) 
+1

あなたの場合

、私はそれがあるべきだと思います; '?ランダムオブジェクトを 'String'にキャストしてくれましたか? –

+0

Apache poiには、Excelでさまざまな種類のデータを取得するためのメソッドがあります。その代わりに使用してください。 – imprezzeb

+0

は、完全なスタックトレースを追加し、エラーが私は混乱のほとんどが行い2017年にrawtypesをいない使用するために粘り強い決意から生じると思わ – Jens

答えて

1

使用getStringCellValue()

String exerciseType = colData.get(1).getStringCellValue(); 

参照:地球上であなたはこの `文字列exerciseType =(String)をcolData.get(1)を行うことができると思います何apache poi cell documentation

関連する問題