Округление числа из XML в Excel

Я читаю некоторые значения из XML:

<DocumentSetNumber>20151027301060001</DocumentSetNumber>

$DSN = $xml.metaBI.DocumentSetNumber

и затем запись в Excel с помощью PowerShell:

$ExcelWorkSheet.Cells.Item($Row,1).Value2 = $DSN 

Но в Excel я получаю это число: 2.0151E+16

Если я изменю формат Excel, я могу получить это: 20151027301060000

Это не тот же номер, и мне нужно получить точно такой же.

Я пытался играть в форматах Excel, а также использовать Tostring() для переменных, но без удачи.

Что еще можно попробовать?

PS. Если я копирую и вставляю это значение вручную, оно работает только я использую

форматирование по месту назначения

вариант в Excel.

Как я могу установить эту опцию из PowerShell?

1 ответ

Решение

Вам нужно будет поместить этот длинный DSN в ячейку в виде строки. Excel имеет точность 15 цифр и округляет любые числа длиннее 15 цифр до ближайшего заполнителя.

Учитывая ваш код, кажется, что $DSN с одинарной кавычкой (например, ' или ASCII 039) как свойство Range.PrefixCharacter должно быть достаточно. С другой стороны, вы можете изменить формат числа принимающей ячейки на текст, но я думаю, что лучше использовать принудительный префикс. Поскольку в PowerShell в качестве оператора цитирования используется одинарная кавычка (она же отметка), нам нужно представить ее как [char]39,

$tic = [char]39
$DSN = $xml.metaBI.DocumentSetNumber
$ExcelWorkSheet.Cells.Item($Row,1).Value2 = $tic + $DSN
# write-host $tic$dsn <~~ this outputs correctly but apparently not correct for XL cell value. see comments.

Это должно измениться 20151027301060001 в '20151027301060001 и Excel примет его как строковый текст, не пытаясь ввести его в число.

Другие вопросы по тегам