将excel单元格格式保留为文本"日期类似"数据

时间:2015-08-25 12:23:02

标签: c# asp.net excel closedxml

这看起来很愚蠢,但我还没有能够以#/####格式获取我的值作为文字字符串而不是格式化为excel中的日期。

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

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

查看输出excel表格,我进入单元格2/1/1997 - 即使我在代码中将格式设置为文本,我也将其作为"日期&# 34;在Excel工作表中 - 我通过右键单击单元格,格式化单元格,查看" date"作为格式。

如果我改变了:

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

我改为35462作为输出。

我只希望我的文字值2/1997显示在工作表上。请告知如何纠正。

5 个答案:

答案 0 :(得分:24)

试试这个

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

答案 1 :(得分:2)

考虑:

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

请注意单引号。

答案 2 :(得分:1)

不确定来自ClosedXML,但也许尝试Range.NumberFormat(MSDN Link

例如......

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

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

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

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

没有做深蹲。
enter image description here

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

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

紧随其后的是单元格值分配。
enter image description here