从XML到Excel舍入数字
我正在阅读XML的一些价值:
<DocumentSetNumber>20151027301060001</DocumentSetNumber> $DSN = $xml.metaBI.DocumentSetNumber
然后使用PowerShell写入Excel:
$ExcelWorkSheet.Cells.Item($Row,1).Value2 = $DSN
但在Excel中,我得到这个数字:2.0151E + 16
如果我改变Excel格式,我可以得到这个:20151027301060000
这不是一样的数字,我需要得到完全一样的。
我试图玩Excel格式,也使用variables的Tostring(),但没有运气。
我还可以尝试什么?
PS。 如果我手动复制并粘贴该值,则只能使用该值
匹配目标格式
Excel中的选项。
我如何从PowerShell设置这个选项?
你将不得不把这个长的DSN作为一个string放入单元格。 Excel具有15位精度,并将长度超过15位的数字四舍五入到最近的占位符。
考虑到你的代码,似乎用单引号(例如'
或ASCII 039)作为Range.PrefixCharacter属性来填充 $DSN
就足够了。 或者,您可以更改接收单元格的数字格式为文本,但我认为强制前缀字符是最好的。 由于在PowerShell中使用单引号(aka tick )作为引号操作符,因此我们需要将其作为[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会将其接受为string文本,而不会将其强制为一个数字。