JavaでExcel操作_POIの利用
2017/06/05
参考サイト
メモ
参考サイト通りにPOIをダウンロード。(自分の場合は ver 3.8)
Exlipseでプロジェクトを作って、libフォルダをプロジェクトの直下に作成。
そこにダウンロードした内容のjarファイルをコピーして、ビルドパスに追加。
(1)ファイル作成・出力
(注意)サンプルを試してみたらシートの型が変わっていた。「Sheet」⇒「HSSFSheet」になっていました。
ver3.8なら下記のサンプルで動くはず。
実行結果はEclipseプロジェクトの直下にsample.xlsができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
package tanaka.selenium.test; import java.io.FileOutputStream; import java.io.IOException; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; public class getExcelData { public static void main(String[] args){ //ワークブックオブジェクトの作成 HSSFWorkbook workbook = new HSSFWorkbook(); //シートの作成 HSSFSheet sheet = workbook.createSheet("test"); /* 1行目の操作 */ //1行目を作成 Row row1 = sheet.createRow(0); //1行目 A列目のセルを作成 Cell cell0_0 = row1.createCell(0); //セルに値を出力 cell0_0.setCellValue("初めてのjavaでExcel"); //1行目 B列目のセルを作成 Cell cell0_1 = row1.createCell(1); //セルに値を出力 cell0_1.setCellValue("1行目B列に出力"); /* 4行目の操作 */ Row row4 = sheet.createRow(4); Cell cell4_0 = row4.createCell(0); cell4_0.setCellValue("行は順番じゃなくても大丈夫!"); // ファイルの出力処理 FileOutputStream out = null; try{ out = new FileOutputStream("sample.xlsx"); workbook.write(out); }catch(IOException e){ System.out.println(e.toString()); }finally{ try { out.close(); }catch(IOException e){ System.out.println(e.toString()); } } } } |
ちなみにこれだと、「xls」のみで「xlsx」はできません。
POI自体は「xlsx」に対応しているようです。
下記参考
(2)ファイル読込・入力
“sample.xls”を読み込むサンプルです。10行目10列目までの値を標準出力に出力します。
- xlsxを指定してもエラーになるので注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
package tanaka.selenium.test; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; //import org.apache.poi.hslf.model.Sheet; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Cell; //import com.google.common.collect.Table.Cell; public class readExcelData { public static void main(String[] args){ FileInputStream in = null; Workbook wb = null; try{ // ファイル読込 in = new FileInputStream("sample.xls"); // ワークブックオブジェクトの作成 wb = WorkbookFactory.create(in); }catch(IOException e){ System.out.println(e.toString()); }catch(InvalidFormatException e){ System.out.println(e.toString()); }finally{ try{ in.close(); }catch (IOException e){ System.out.println(e.toString()); } } // workbookオブジェクト内にシートオブジェクトの作成 //HSSFSheet sheet = (HSSFSheet) wb.createSheet("new sheet"); //Sheetの読み込み //Sheet sheet = wb.getSheet("シート名"); //シート名で指定 Sheet sheet = wb.getSheetAt(0); //シート番号(0開始)で指定 /* 行・セルの値を取得する (空白行はnullとなる)*/ //Rowを10行目まで取得 for(int i=0; i<10; i++){ Row row = sheet.getRow(i); if(row != null){ /*特定列を取得 Cell cell = row.getCell(6); System.out.println(cell.getStringCellValue()); */ /*各列を取得*/ //Cellを10列目まで取得する。 for(int t=0; t<10; t++){ Cell cell = row.getCell(t); if(cell != null){ System.out.print(cell.getStringCellValue()); System.out.print("::"); } } } System.out.println(); } // アウトプットスクリームの作成 FileOutputStream out = null; /* 出力用データの作成 */ try{ //出力用ファイルのストリームの作成 out = new FileOutputStream("sample4_1.xls"); //読み込んだ内容を出力 wb.write(out); }catch(IOException e){ System.out.println(e.toString()); }finally{ try { out.close(); }catch(IOException e){ System.out.println(e.toString()); } } } } |
関連記事
関連記事はありませんでした