解説動画
今回は、Eclipseに作ったMavenプロジェクトで、Excelシートを読み取るアプリケーションを作成します。
■動画はこちら
■Youtube版の解説で使用しているソースコード
 動画と一緒にこちらも参考にどうぞ。
ここでは、数式の処理の部分で、さらに処理を分けています。
 ただ、printメソッドの先頭や、呼び出す前で数式を判断してしまえば、もう少しスマートになりますね。
| 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 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | package poi; import java.io.File; import java.io.FileInputStream; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.DateUtil; import org.apache.poi.ss.usermodel.FormulaEvaluator; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.ss.usermodel.WorkbookFactory; public class ExelFileReadTest {     public static void main(String[] args) {         try {             File file = new File("d:\\work\\読み取りサンプル.xlsx");             try(FileInputStream inputStream = new FileInputStream(file);                 Workbook workbook = WorkbookFactory.create(inputStream)){                 Sheet sheet = workbook.getSheetAt(0);                 //直接入力のセルを取得(3行目から8行目のE列)                 print(workbook,sheet,2,4);                 print(workbook,sheet,3,4);                 print(workbook,sheet,4,4);                 print(workbook,sheet,5,4);                 print(workbook,sheet,6,4);                 print(workbook,sheet,7,4);                 //数式のセルを取得(9行目のF列)                 print(workbook,sheet,8,5);             }         } catch (Exception e) {             e.printStackTrace();         }     }     private static void print(Workbook workbook,Sheet sheet,int r,int c) {         //引数の行,列でシートからセルを取得         Row row = sheet.getRow(r);         Cell cell = row.getCell(c);         CellType cType = cell.getCellType();         //セル値の取得         if(cType == CellType.BLANK) {             //ブランクのセル             System.out.println("[BLANK]");         }         else if(cType == CellType.STRING) {             //文字列のセル             System.out.println(cell.getStringCellValue());         }         else if(cType == CellType.NUMERIC) {             if(DateUtil.isCellDateFormatted(cell)) {                 //日付のセル                 System.out.println(cell.getDateCellValue());             } else {                 //数値のセル                 System.out.println(cell.getNumericCellValue());             }         }         else if(cType == CellType.BOOLEAN) {             //真偽値のセル             System.out.println(cell.getBooleanCellValue());         }         else if(cType == CellType.ERROR) {             //エラーのセル             System.out.println(cell.getErrorCellValue());         }         else if(cType == CellType.FORMULA) {             //数式のセル             //数式セルの場合、数式を評価したセル値のセルタイプごとに値と数式を表示             FormulaEvaluator evaluator =                      workbook.getCreationHelper().createFormulaEvaluator();             CellType cvType = evaluator.evaluate(cell).getCellType();             if(cvType == CellType.BLANK) {                 //ブランクのセル                 System.out.println("[BLANK]");             }             else if(cvType == CellType.STRING) {                 //数式の結果は、文字列                 System.out.println(cell.getStringCellValue()                          + "(" + cell.getCellFormula() + ")");             }             else if(cvType == CellType.NUMERIC) {                 if(DateUtil.isCellDateFormatted(cell)) {                     //数式の結果は、日付                     System.out.println(cell.getDateCellValue()                              + "(" + cell.getCellFormula() + ")");                 } else {                     //数式の結果は、数値                     System.out.println(cell.getNumericCellValue()                              + "(" + cell.getCellFormula() + ")");                 }             }             else if(cvType == CellType.BOOLEAN) {                 //数式の結果は、真偽値                 System.out.println(cell.getBooleanCellValue()                          + "(" + cell.getCellFormula() + ")");             }             else if(cvType == CellType.ERROR) {                 //数式の結果は、エラー                 System.out.println(cell.getErrorCellValue()                          + "(" + cell.getCellFormula() + ")");             }         }     } } | 














