将 excel 单元格格式保留为包含 "date like" 数据的文本

Keep excel cell format as text with "date like" data

这看起来很愚蠢,但我无法将 #/#### 格式的值写成文字字符串,而不是格式化为 excel 中的日期。

我正在使用 ClosedXML 写入 excel,并使用以下内容:

// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).DataType = XLCellValues.Text;
tableRow.Cell(1).Value = "2/1997";
// snip

查看输出 excel sheet 我进入单元格 2/1/1997 - 尽管我在代码中将格式设置为文本,但我将其作为"Date" 在 excel sheet - 我通过右键单击单元格,格式化单元格,看到 "date" 作为格式来检查这个。

如果我将事情更改为:

// snip
IXLRangeRow tableRow = tableRowRange.Row(1);
tableRow.Cell(1).Value = "2/1997";
tableRow.Cell(1).DataType = XLCellValues.Text;
// snip

我将 35462 作为我的输出。

我只想在作品sheet 上显示我的字面值 2/1997。请指教如何改正。

考虑:

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

注意单引号。

不确定来自 ClosedXML,但可以尝试 Range.NumberFormat (MSDN Link)

例如...

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

Selection.NumberFormat = "#/####"

试试这个

ws.Cell(rowCounter, colCounter).SetValue<string>(Convert.ToString(fieldValue));
ws.Cell(rowCounter, colCounter).Value="'"+Convert.ToString(fieldValue));

在将值写入单元格之前必须完成格式化。

我有以下机制,运行 在我制作工作表之后,就在我保存它之前:

    private void SetColumnFormatToText(IXLWorksheet worksheet)
    {
        var wholeSheet = worksheet.Range(FirstDataRowIndexInExcel, StartCellIndex, RowCount, HeaderCount);
        wholeSheet.Style.NumberFormat.Format = "@";
    }

哪个没做深蹲

在我将值写入一行中的单元格之前就这样做了。

worksheet.Range(RowIndex, StartCellIndex, RowIndex, EndCellIndex).Style.NumberFormat.Format = "@";

紧随其后的是单元格值分配。