3

SharePoint 2013 で ItemAdded のイベント レシーバーを作成しています。スプレッドシートを読み取るために OpenXML を使用しています。SharePoint ライブラリにあるログファイルをプログラムで開こうとすると、次のエラーが発生します。

ファイルに破損したデータが含まれています

このエラーをスローするコード ブロックは次のとおりです。

using (SpreadsheetDocument spreadsheet = SpreadsheetDocument.Open(mstream, false))
using (SpreadsheetDocument logsheet = SpreadsheetDocument.Open(logstream, false))

最初の行は問題なく通過し、2 行目 (ログシート) は壊れています。どちらもストリームから読み取られています。スプレッドシートはイベントが発生したときに追加されるアイテムで、ログシートは現在 SharePoint に存在するアイテムです。

スプレッドシートは、次のパスを使用してデータ ストリームから開かれます。

string workbookpath = properties.ListItem.Web.Url + "/" + properties.ListItem.File.Url;

ログシートは、SharePoint の直接 URL を使用してデータストリームを使用して開かれます

string logFilePath = "http://SPSiteName/sites/SP/Dropbox/RuntimeLog.xml";

どんな助けや洞察も大歓迎です。

4

2 に答える 2

0

ログシートは XML ファイル [.xml] です。Excel ファイル [.xlsx] ではありません (Open XML は XMLだけを意味するものではありません)。それが失敗した理由です。

于 2013-10-31T02:38:20.670 に答える