当从c#写入Excel-Cell时,如何禁用自动格式化

本文关键字:何禁用 格式化 写入 Excel-Cell 当从 | 更新日期: 2023-09-27 18:05:34

我编写了一个将内容写入excel表格的应用程序。到目前为止一切顺利。但在某些情况下,Excel的自动格式化功能改变了我的值。例如,我写"真"/"假"到一个单元格,但Excel解释它并翻译它。第二个例子,我在Excel中写入一个电话号码,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();

当从c#写入Excel-Cell时,如何禁用自动格式化

另一种使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();

试试这个

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

表示布尔值

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