Округление числа из 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 примет его как строковый текст, не пытаясь ввести его в число.