从 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 将接受它作为字符串文本而不试图将其强制转换为数字。
我正在从 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 将接受它作为字符串文本而不试图将其强制转换为数字。