从 XML 到 Excel 的舍入数

Rounding number from XML to 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 格式并在变量上使用 Tostring(),但没有成功。

我还可以尝试什么?

PS。如果我手动复制并粘贴此值,它仅适用于我使用

match destination formatting

Excel 中的选项。

如何从 PowerShell 设置此选项?

您必须将这个长 DSN 作为字符串放入单元格中。 Excel 有一个 15 digit precision 并将任何超过 15 位的数字四舍五入到最接近的占位符。

鉴于您的代码,似乎在 $DSN 前加上单引号(例如 ' 或 ASCII 039)作为 Range.PrefixCharacter property 就足够了。或者,您可以将接收单元格的数字格式更改为 Text,但我认为最好使用强制前缀字符。由于单引号(aka tick)在 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 将接受它作为字符串文本而不试图将其强制转换为数字。