ApachePOIでJavaからExcelを読み込む（Eclipse）

# はじめに
Javaでエクセルファイルの読込をする方法を説明します。
かなりつまづきましたが、なんとかうまくいったのでこの方法を忘れないようにメモ代わりとして。
ただし、この方法はいろいろ試していたらなんか上手くいった程度のものなので間違っているかもしれないことをご了承ください。
# 1.ApachePOIのダウンロード
[公式サイト](https://poi.apache.org/download.html)からApachePOIをダウンロードします。
![apachepoiサイト画像.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/f8d07ce0-2dda-a2f0-7c43-663b04463ef4.png)

ダウンロードしたZipファイルを解凍して適当なフォルダに入れます。
# 2.Eclipseのビルド・パスの設定
・何かしらのプロジェクトを選択した状態で右クリック
＞プロパティ＞Javaのビルドパス
![2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/bd13bf85-027b-7b98-0ddf-cec86b7c209b.png)

・クラスパスを選択して右の`外部JARの追加`をおす
・ポップアップ画面からさっきダウンロードしたのを全部ここにつっこみます。[^1]

[^1]: 自分が[参考にしたサイト](https://extralab.org/wp/java-eclipse-apachepoi-write-read/)では、全部入れないと書いてあったのですが、自分がダウンロードしたファイルと中身が違ったので、とりあえず全部入れてみました。
 # 3.もう一個jarファイルを追加する
[このサイト](https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core)から`log4j-core`をダウンロードして先ほど同様にEclipseの設定までします。
これを入れないと上手く動かないようです。
![3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/1be88b81-4db4-03d1-eede-4ee3f0894b6d.png)
好きなバージョンを選んで...
![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/1e111fb6-4a55-af3c-a051-89e9e1f6d829.png)
jarファイルをダウンロードして先ほど同様にEclipseの設定までします。
これで準備は完了です。
# 4.読み込むためのエクセルファイルを準備する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/d64017dd-406b-2f12-44c5-24fd112377e4.png)
中身は何でもよいので、適当に作って、名前を付けて保存します。
自分はreadTest.xlsxというファイル名です。
# 5.コードを書く
コードも[このサイト](https://extralab.org/wp/java-eclipse-apachepoi-write-read/)を参考にしていますが、変えている箇所もあります。
```Java
import java.io.FileInputStream;
import java.io.IOException;
import org.apache.poi.EncryptedDocumentException;
import org.apache.poi.ss.usermodel.Cell;
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 Test {

	public static void main(String[] args) throws EncryptedDocumentException, IOException{
		
		Workbook workbook = null;
		try {
			workbook = WorkbookFactory.create(new FileInputStream("ファイルのパスを書く（パス取得方法後述）"));
			Sheet sheet = workbook.getSheetAt(0);
			
			Row row0 = sheet.getRow(0); //一行目
			Row row2 = sheet.getRow(2); //3行目
			
			Cell cell0 = row0.getCell(0); //a1
			Cell cell1 = row0.getCell(1); //b1
			Cell cell2 = row2.getCell(2); //C3
			
			System.out.println(cell0.getStringCellValue());
			System.out.println(cell1.getNumericCellValue());
			System.out.println(cell2.getStringCellValue());
			
			System.out.println("完了");
			
		}catch(IOException e) {
			System.out.println(e.toString());
		}finally {
			try {
				if(workbook != null) {
					workbook.close();
				}
			}catch(IOException e) {
				System.out.println(e.toString());
			}
		}
	}

}

```
## パスの取得方法
Windowsの場合は、
![5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2586452/3b895f70-940a-01c1-05a5-8f3bff537ff2.png)
ファイルを選択した状態で、ホームタブの赤丸で囲ったボタンを押すとパスがクリップボードにコピーされます。
Macとかの場合は分からないので検索してください。。

## ちょっと注意
自分がそのままパスをコピペして実行すると、無効なエスケープシーケンスですってEclipseに怒られてしまいました。
どうも、パスのバックスラッシュや¥マークを2つ重ねる必要があるようです。
お気を付けください。
例）
そのままコピペするとこうなるところを...
"C:\Users\Username\Saved Pictures\5.png"

こうする
`"C:\\Users\\Username\\Saved Pictures\\5.png"`
# 6.実行する
実行結果はこんな感じになります。
```
テスト用
123.0
Hello
完了
```
エクセル上に数字123を書いたセルは、文字列ではなく、数値で取得するようにしているので、「123.0」と表示されていると思われます。
# 終わりに
以上で説明は終わりです。
自分が上手くいった方法をまとめただけですが、誰かの助けになれば幸いです。