これはばかげているように見えますが、Excel内で日付としてフォーマットされるのではなく、リテラル文字列として書き込むために#/####
のフォーマットで値を取得することができませんでした。
ClosedXMLを使用してExcelに書き込み、以下を使用しています。
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip
セル2/1/1997
にある出力Excelシートを見る-コードのテキストとしてフォーマットを設定しているのに、Excelシートでは「日付」として取得している-これを正しくチェックしたセルをクリックし、セルをフォーマットします。フォーマットとして「日付」が表示されます。
私が物事を次のように変更した場合:
// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip
代わりに、出力として35462
を取得します。
2/1997
のリテラル値をワークシートに表示したいだけです。修正方法を教えてください。
これを試して
ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue));
考えてみましょう:
tableRow.Cell(1).Value = "'2/1997";
一重引用符に注意してください。
ClosedXMLからはわかりませんが、Range.NumberFormat( MSDN Link )を試してみてください。
例えば...
Range("A1").NumberFormat = "@"
または
Selection.NumberFormat = "#/####"
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue));