从C#写入Excel-Cell时如何禁用autoformat

时间:2016-09-02 11:42:54

标签: c# excel-interop

我编写了一个将内容写入Excel表格的应用程序。到现在为止还挺好。但在某些情况下,Excel的autoformat功能改变了我的价值观。 例如,我将'true'/'false'写入单元格,但Excel会对其进行解释并进行翻译。 第二个例子,我给Excel写了一个telephonenumber,Excel切掉了前导'0',所以'012345'改为'12345'。

我怎么说,一个单元格只是一个文本/字符串单元格?

这是一个示例代码,我如何写入Excel:

ws.get_Range("A1", "A1").Value = "true";
ws.get_Range("A1", "A1").Cells.WrapText = true;
ws.get_Range("A1", "A1").Rows.AutoFit();

最好的问候

2 个答案:

答案 0 :(得分:2)

使Excel将值视为文本的另一种方法是在值前面添加'

ws.get_Range("A1").Value = "'0123";

'仅在单元格公式中可见,但在其值/文本中不可见。

您还可以一次设置多个单元格:

object[,] values = { { "true", "0123" }, { "false", "0125" } };
var range = ws.get_Range("A1:B2")
range.NumberFormat = "@"; // Text format to treat the values as Text
range.Value = values

Clipboard.SetText("'true\t'01234\n'false\t'01235");
ws.get_Range("A1").PasteSpecial(); // or just ws.Paste();

答案 1 :(得分:0)

尝试使用此前导零

ws.get_Range("A1", "A1").NumberFormat = "@";
ws.get_Range("A1", "A1").Value = "012345";

对于布尔值

ws.get_Range("B1", "B1").Value = "True/False";