2016-10-15 15 views
-1

私は、配列にExcelファイルを読み込み、そのデータを使って操作してユーザーに答えを返さなければならない学校プロジェクトに取り組んでいます。私はファイルを配列に等しく設定する方法を見つけられず、そこから特定のビットのデータを取得することもできません。どんな助けもありがとう。実際の質問のプロンプトは次のとおりです。Excelファイルを読み込んで配列に入れるにはどうしたらいいですか?

米国に関連するデータを含むファイルを読むJavaアプリケーションを設計します。 犯罪の統計情報、1994-2013から。ファイルの説明を以下に示します。アプリケーション は、データに関する統計結果を提供する必要があります。 配列とJavaクラスを使用してデータを格納します。 (ヒント:フィールドを保存するには、 USCrimeClassを作成することができます。また、米国犯罪オブジェクトの配列を持つこともできます)

+0

https://poi.apache.org/ http://stackoverflow.com/questions/15336457/how-to-process-old-excel-xls-ファイルを使用するpo – user3159253

+1

[Javaでファイルを読み書きする方法]の複製があります(http://stackoverflow.com/questions/1516144/how-to-read-and-write-excel-file-in-java ) – user3159253

+0

あなたの課題は、あなたがエクセルファイルを読む必要があるとは言いません。あなたは様々なタイプで読むことができます。単に「データを含むファイルを読む」と言っています。 –

答えて

0

私は公式サイトからこれをコピーし、いくつかのTODO行をガイドライン。この概要に従うことで解決策を見つけることができます。私はそれがあなたの割り当てであるため、正確な答えを与えていません。

一つエクセル行== USCrimeClassオブジェクト

あなたはクラスの行にマップされたクラスを作成する必要があります。そのクラスの名前はUSCrimeClassにする必要があります。

USCrimeClass

USCrimeClassは、行のセルにマッピングされるフィールドを有していなければなりません。

例:

1994年から2013年

Official Reference

は、セルの内容を取得するには、セルの内容 の取得から、あなたは最初の必要性は、それが(求めているセルの種類を知っています数値の内容の文字列セルは、例えばNumberFormatExceptionを取得します。したがって、セルのタイプをオンにして、そのセルに適切なゲッターを呼び出すことが必要になります。

以下のコードでは、すべてのセルを1つのシートにループし、セルの参照(例:A3)を印刷してからセルの内容を印刷します。ほとんどのテキスト抽出の要件については

// import org.apache.poi.ss.usermodel.*; 

DataFormatter formatter = new DataFormatter(); 
Sheet sheet1 = wb.getSheetAt(0); 

//TODO int numberOfRows=getNumberOf Rows from sheet1; 
//TODO USCrimeClass[] arrayOfUSCrimeClass =new USCrimeClass [numberOfRows](); 

for (Row row : sheet1) { 

    //TODO create new object of USCrimeClass 
    //TODO USCrimeClass objectUSCrimeClass=new USCrimeClass(); 
    for (Cell cell : row) { 
     CellReference cellRef = new CellReference(row.getRowNum(), cell.getColumnIndex()); 
     System.out.print(cellRef.formatAsString()); 
     System.out.print(" - "); 

     // get the text that appears in the cell by getting the cell value and applying any data formats (Date, 0.00, 1.23e9, $1.23, etc) 
     String text = formatter.formatCellValue(cell); 
     System.out.println(text); 

     // Alternatively, get the value and format it yourself 
     switch (cell.getCellTypeEnum()) { 
      case CellType.STRING: 
       System.out.println(cell.getRichStringCellValue().getString()); 
       //TODO set values to feild from excel cell objectUSCrimeClass.setFrom(cell.getRichStringCellValue().getString()); 
       break; 
      case CellType.NUMERIC: 
       if (DateUtil.isCellDateFormatted(cell)) { 
        System.out.println(cell.getDateCellValue()); 
       } else { 
        System.out.println(cell.getNumericCellValue()); 
       } 
       break; 
      case CellType.BOOLEAN: 
       System.out.println(cell.getBooleanCellValue()); 
       break; 
      case CellType.FORMULA: 
       System.out.println(cell.getCellFormula()); 
       break; 
      case CellType.BLANK: 
       System.out.println(); 
       break; 
      default: 
       System.out.println(); 
     } 
    } 

//TODO add row object to array or list arrayOfUSCrimeClass[i]=objectUSCrimeClass; 
} 

テキスト抽出

、標準ExcelExtractorクラスを使用すると、必要なすべてを提供する必要があります。

InputStream inp = new FileInputStream("workbook.xls"); 
HSSFWorkbook wb = new HSSFWorkbook(new POIFSFileSystem(inp)); 
ExcelExtractor extractor = new ExcelExtractor(wb); 

extractor.setFormulasNotResults(true); 
extractor.setIncludeSheetNames(false); 
String text = extractor.getText(); 

https://poi.apache.org/spreadsheet/examples.html

https://poi.apache.org/spreadsheet/quick-guide.html#Iterator

関連する問題