web-dev-qa-db-ja.com

Excelのセル形式を「日付のような」データを含むテキストとして保持する

これはばかげているように見えますが、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のリテラル値をワークシートに表示したいだけです。修正方法を教えてください。

12
Kritner

これを試して

ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue));
24
Alexey Miller

考えてみましょう:

tableRow.Cell(1).Value = "'2/1997";

一重引用符に注意してください。

2
Gary's Student

ClosedXMLからはわかりませんが、Range.NumberFormat( MSDN Link )を試してみてください。

例えば...

Range("A1").NumberFormat = "@"

または

Selection.NumberFormat = "#/####"
1
u8it
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue));
0
Rio Stephen