【问题标题】:How to disable autoformat, when writing to Excel-Cell from C#从 C# 写入 Excel-Cell 时如何禁用自动格式化
【发布时间】:2016-09-02 21:30:43
【问题描述】:

我编写了一个将内容写入 Excelsheet 的应用程序。到目前为止,一切都很好。但在某些情况下,Excel 中的自动格式化功能改变了我的价值观。 例如,我将 'true'/'false' 写入单元格,但 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-interop


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试这个作为前导零

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

      对于布尔值

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

      【讨论】:

        猜你喜欢
        • 2020-07-02
        • 2021-05-16
        • 2019-08-18
        • 2018-06-10
        • 2021-10-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多