从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文本,而不会将其强制为一个数字。