Cellに日付と時刻の書式を設定する(EPPlus編)
株式会社クローバーフィールドの杉山です。
今回は、EPPlusで日付と時刻の書式設定を確認します。
以前のCellの書式を設定する(EPPlus編)で日付と時刻の書式がうまく反映できなかった件について調査した内容を報告します。
今回のコードは下記のとおりです。
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 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using OfficeOpenXml; using OfficeOpenXml.Style; using System.IO; namespace ExcelEPPlus { class Program { static void Main(string[] args) { using (var p = new ExcelPackage()) { var ws = p.Workbook.Worksheets.Add("MySheet"); // 日付の値設定 /* NumFmtIDはGetのみ ws.Cells[3, 1].Style.Numberformat.Format = "yyyy/mm/dd"; ws.Cells[3, 1].Style.Numberformat.NumFmtID = 14; ws.Cells[3, 1].Value = "2019/8/3"; */ ws.Cells[3, 2].Style.Numberformat.Format = "yyyy/mm/dd"; ws.Cells[3, 2].Value = DateTime.Parse("2019/8/4"); // 時刻の値設定 /* NumFmtIDはGetのみ ws.Cells[4, 1].Style.Numberformat.Format = "HH:mm:ss"; ws.Cells[4, 1].Style.Numberformat.NumFmtID = 14; ws.Cells[4, 1].Value = "4:15:3"; */ ws.Cells[4, 2].Style.Numberformat.Format = "HH:mm:ss"; ws.Cells[4, 2].Value = DateTime.Parse("4:17:4"); p.SaveAs(new FileInfo(@"c:\output\EPPlus.xlsx")); } } } } |
NumFmtIdの値の値については、下記のとおりです。
しかし、EPPlusでNumFmtIdを設定したかったのですが、プロパティがGetのみでした。
しかたがないので、DateTimeで日付、時刻をセルに値を設定みました。
結果は、下記のとおりです。
B3: 設定した日付に書式が正しく設定されています
B4: 設定した時刻の書式が正しく設定されています。Cellに日付と時刻の書式を設定する(ClosedXML編)と同様、日付のデータを設定したため、Cellの値は実行日 + 指定した時刻となっています。
次は、NPOIの動作を確認します。