Как отключить автоформат при записи в Excel-Cell из С#

Я написал приложение, которое записывает содержимое в таблицу 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();

с уважением


person BHuelse    schedule 02.09.2016    source источник


Ответы (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

or

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

Попробуйте это для начального нуля

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

Для логического значения

ws.get_Range("B1", "B1").Value = "True/False";
person DeeGo    schedule 02.09.2016