2

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。この値を手動でコピーして貼り付けると、使用するだけで機能します

宛先フォーマットに一致

エクセルのオプション。

PowerShell からこのオプションを設定するにはどうすればよいですか?

4

1 に答える 1

3

この長い DSN を文字列としてセルに入れる必要があります。Excel の精度は 15 桁で、15 桁を超える数値は最も近いプレースホルダーに丸められます。

コードを考えると、 Range.PrefixCharacter プロパティ$DSNとして一重引用符 ('または ASCII 039 など) を先頭に付けるだけで十分なようです。または、受信セルの数値形式をテキストに変更することもできますが、強制的なプレフィックス文字が最適だと思います。一重引用符 (別名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 はそれを数値に強制しようとせずに文字列テキストとして受け入れます。

于 2015-10-29T21:55:33.597 に答える