这看起来很愚蠢,但我还没有能够以#/####
格式获取我的值作为文字字符串而不是格式化为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
显示在工作表上。请告知如何纠正。
答案 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 = "@";
}
在我将值写入一行中的单元格之前这样做。
worksheet.Range(RowIndex, StartCellIndex, RowIndex, EndCellIndex).Style.NumberFormat.Format = "@";