Cellに日付と時刻の書式を設定する(ClosedXML編)
株式会社クローバーフィールドの杉山です。
ClosedXML, EPPlus, NPOIを使用してExcelを出力する際、セルに書式を設定するための機能を調査しました。
どうも日付と時刻の書式を設定しても、セルの値が思うように表示されませんでした。
と、言う訳で継続調査の結果です。
まずは、ClosesdXML編です。
今回のソースは下記の通りです。
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 | using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using ClosedXML.Excel; namespace ExcelClosedXML { class Program { static void Main(string[] args) { String filepath = @"c:\output\ClosedXML.xlsx"; var workbook = new XLWorkbook(); var worksheet = workbook.Worksheets.Add("mySheet"); // 日付の値設定 worksheet.Cell("B3").Style.NumberFormat.NumberFormatId = 14; worksheet.Cell("B3").Style.NumberFormat.Format = "yyyy/mm/dd"; worksheet.Cell("B3").Value = "2019/8/3"; worksheet.Cell("C3").Style.NumberFormat.Format = "yyyy/mm/dd"; worksheet.Cell("C3").Value = DateTime.Parse("2019/8/4"); // 時刻の値設定 worksheet.Cell("B4").Style.NumberFormat.NumberFormatId = 21; worksheet.Cell("B4").Style.NumberFormat.Format = "hh:mm:ss"; worksheet.Cell("B4").Value = "3:4:5"; worksheet.Cell("C4").Style.NumberFormat.Format = "hh:mm:ss"; worksheet.Cell("C4").Value = DateTime.Parse("3:4:5"); workbook.SaveAs(filepath); } } } |
実行結果は、下記のとおりです。
B3: numberFormatIdを設定することで、設定した値に書式が反映されて表示されるようになりました。
C3: numberFormatIdを設定せずに、設定する値を日付にすることで書式が反映されました。
B4: B3と同様に書式が設定されています。設定されている値は、3:04:05となっています。
C4: 書式が反映されています。Cellの値は、日付のデータを設定したため、2019/09/12 3:04:05となっています。
次回は、EPPLus編です。