2017-12-20 8 views
1

Microsoft Graph APIを使用してExcelスプレッドシートのセルを変更しています。 Int32.Maxより大きい整数値をAPIを介してスプレッドシートに書き込む場合、値の上位32ビットは切り捨てられているように見え、下位32ビットのみがスプレッドシートに書き込まれたように見えます。Int32.Maxより大きい値は、Microsoft Graph API for Excelで切り捨てられます。

以下は、私がテストした値です。

試験1:

Value sent: 1,234,000,000,000 (0x11F5021B400) 
Value written to cell: 1344386048 (0x5021B400) 

上位ビットは、下位32ビットを残し、トランケートされているように見えます。

試験2:0x100000000の最上位ビットが切り捨てられる場合

Value sent: 4294967296 (0x100000000) 
Value written to the cell: 0 

:符号付きのInt32の数として解釈さ

Value sent: 2,147,483,648 (Int32.Max + 1) (0x80000000) 
Value written to the cell: -2147483648 

0x80000000場合、それは-2147483648

試験3であります残りの32ビットは符号付きInt32 0になります

試験4:

Value sent: 4294967295 (0xFFFFFFFF) 
Value written to the cell: -1 

符号付きのInt32値として解釈され、0xFFFFFFFF、値のすべてが.NET Microsoftグラフクライアントライブラリを使用して送信された-1

なります。送信された値はすべてlong型です。要求の値の型をDoubleに設定しても問題は解決されませんでした。

ExcelスプレッドシートはInt32.Maxより大きい値をサポートしているため、Microsoft Graph APIもこれをサポートすると期待しています。どんな助けや反応も大歓迎です。

+0

これはAPI自体ではなく、SDKのバグのようです。 GitHubでC#SDKチームの問題を記録することができます:https://github.com/microsoftgraph/msgraph-sdk-dotnet/issues –

+0

@MarcLaFleur提案していただきありがとうございます。私はその問題を報告した。 – DinhNguyen92

+0

更新:Fiddlerを使用してSDKで送信されたリクエストを調べた後、長整数がリクエストで切り捨てられていないことがわかりました。しかし、受信した応答では、整数はすべて切り捨てられました。これは、実際問題がExcelサービス自体であり、SDKではないことを示唆しているようです。 SDKチームは、この問題にサービスバグとも呼ばれ、まだ調査中です。 – DinhNguyen92

答えて

0

Microsoftチームの提案する解決策は、数値をExcel APIに文字列として送信することです。私は、この解決策がトランケーションの問題を解決したことを確認することができました。しかし、スプレッドシートの戻り値と実際の値は依然として数値であるため、これはむしろ矛盾しています。それにもかかわらず、マイクロソフトのチームは、これを修正することでいくつかの大きな変化が起こると述べています。

関連する問題