はじめに
ClodedXMLで数字を文字列として出力したいときのメモです。
間違いや勘違いに関しましてはご指摘いただけると幸いです。
sheet.Cell(row, col).Value = "123";
上記のようにClodedXMLでセルに数字を文字列として格納すると、Excelを開いたときに数値として扱われてしまいます。
sheet.Cell(row, col).Value = "'123";
sheet.Cell(row, col)
.SetValue("123")
.SetDataType(XLCellValues.Text);
上記の書き方だと、Excelを開いたときは文字列として表示しているように見えるのですが、そのセルを編集しようとするとエクセル側で数値と判断してしまうのか、数値の表示に変わってしまいます。
sheet.Cell(row, col)
.SetValue("123")
.Style.NumberFormat.Format = "@";
GitHubのClodedXMLのWikiのFAQの4番目を使用すると、編集しようとしても文字列として扱います。
上記以外では以下も同じ内容です。
sheet.Cell(row, col)
.SetValue("123")
.Style.NumberFormat.SetFormat("@");
sheet.Cell(row, col)
.SetValue("123")
.Style.NumberFormat.NumberFormatId = 49
NumberFormatIdの49の数字はGitHubのClodedXMLのWikiのNumberFormatIdのページから確認できます。