Apache POIで2003形式(xls)と2007形式(xlsx)の両方を使用する方法
Javaでエクセルを扱うときはApache POIがメジャーだと思います。
Apache POIはこちらからダウンロードします。
Apache POIのバージョンが3.4くらい(確認したのは3.2)までだと2003以前のエクセルと2007のエクセルで、扱うライブラリが異なります。
1 2 |
2003(org.apache.poi.hssf.~) 2007(org.apache.poi.xssf.~) |
Apache POIのバージョンが3.5から、2003と2007の両方を扱えるライブラリが用意されています。
1 |
2003 or 2007(org.apache.poi.ss.~) |
org.apache.poi.ss.usermodel.Cellの定数
Cellクラスには以下のstatic定数があります。
1 2 3 4 5 6 |
CELL_TYPE_NUMERIC CELL_TYPE_STRING CELL_TYPE_FORMULA CELL_TYPE_BLANK CELL_TYPE_BOOLEAN CELL_TYPE_ERROR |
以下、使用例です。
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 |
import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.DateUtil; 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 ApachePoi { /** * @param args * @throws IOException * @throws FileNotFoundException * @throws InvalidFormatException */ public static void main(String[] args) throws FileNotFoundException, IOException, InvalidFormatException { Workbook wb = WorkbookFactory.create(new FileInputStream("D:\\sample.xlsx")); Sheet sheet = wb.getSheet("Sheet1"); for (Row row : sheet) { for (Cell cell : row) { System.out.println(getCellValue(cell, "yyyy/MM/dd")); } } } public static Object getCellValue(Cell cell,String date) { switch (cell.getCellType()) { case Cell.CELL_TYPE_STRING: return cell.getRichStringCellValue().getString(); case Cell.CELL_TYPE_NUMERIC: if (DateUtil.isCellDateFormatted(cell)) { Date dateValue = cell.getDateCellValue(); DateFormat dateFormat = new SimpleDateFormat(date); return dateFormat.format(dateValue); } else { return cell.getNumericCellValue(); } case Cell.CELL_TYPE_BOOLEAN: return cell.getBooleanCellValue(); case Cell.CELL_TYPE_FORMULA: return cell.getCellFormula(); default: return null; } } } |
POIで必要なライブラリ
poi-bin-3.16-20170419.zipをダウンロードして、不要なjarもあります。
必要なjarは以下になります。
1 2 3 4 |
poi-3.16.jar poi-ooxml-3.16.jar poi-ooxml-schemas-3.16.jar ooxml-libフォルダ配下に存在するxmlbeans-2.6.0.jar |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^