Apache/apache関連情報

Apache POIでExcelファイルにアクセスする(5ページ目)

JavaからExcelのファイルにアクセスする方法とは? それはApache POIを利用するのです。

執筆者:掌田 津耶乃

Excelファイルを読み込む


続いて、XLSファイルを読み込むloadFromFileを作成しましょう。使用するクラス類は、ストリーム関係がInputStreamとなる他はそれほど大きな違いはありません。今度は、ファイルから読み込んだオブジェクトから、ワークブック、シート、行データ、セルデータといったものをとりだしてJTableのモデルに収めていく、といった流れになります。

public void loadFromFile(){
  JFileChooser chooser = new JFileChooser();
  int res = chooser.showOpenDialog(this);
  if (res == JFileChooser.APPROVE_OPTION){
    File fname = chooser.getSelectedFile();
    FileInputStream input = null;
    BufferedInputStream binput = null;
    POIFSFileSystem poifs = null;
    try {
      input = new FileInputStream(fname);
      binput = new BufferedInputStream(input);
      poifs = new POIFSFileSystem(binput);
      
      HSSFWorkbook workbook = new HSSFWorkbook(poifs);
      HSSFSheet sheet = workbook.getSheetAt(0);
      int rows = sheet.getLastRowNum();
      rows = rows > (row_num - 1) ? row_num - 1 : rows;
      for(int i = 0;i <= rows;i++){
        HSSFRow row = sheet.getRow(i);
        if (row == null) continue;
        int cols = row.getLastCellNum();
        cols = cols >= (col_num - 1) ? col_num - 1 : cols;
        for(int j = 0;j <= cols;j++){
          HSSFCell cell = row.getCell((short)j);
          if (cell == null) continue;
          if (cell.getCellType() == HSSFCell.CELL_TYPE_STRING){
            HSSFRichTextString val = cell.getRichStringCellValue();
            table.getModel().setValueAt(val,i,j);
          }
          if (cell.getCellType() == HSSFCell.CELL_TYPE_NUMERIC){
            double val = cell.getNumericCellValue();
            table.getModel().setValueAt(val,i,j);
          }
        }
      }
    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      try {
        binput.close();
      } catch (IOException e) {
        e.printStackTrace();
      }
    }
  }
}

まず、JFileChooserで読み込むファイルを選択します。このあたりは、保存の場合とだいたい同じですね。唯一違うのは、呼び出すのが保存ダイアログではなく、オープンダイアログである、という点です。

JFileChooser chooser = new JFileChooser();
int res = chooser.showOpenDialog(this);
if (res == JFileChooser.APPROVE_OPTION){
  File fname = chooser.getSelectedFile();

JFileChooserインスタンスを作成後、「showOpenDialog」というメソッドを呼び出していますね。これが、ファイルを選択するオープンダイアログです。後は、返値がJFileChooser.APPROVE_OPTIONがどうかを調べ、getSelectedFileで選択されたFileインスタンスを取得する、と保存の場合とまったく同じです。


  • 前のページへ
  • 1
  • 4
  • 5
  • 6
  • 次のページへ

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます