オープンXMLでワークシートを挿入 - 「…読み取れないコンテンツ…」
-
29-09-2019 - |
質問
このチュートリアルに従うとき:
http://msdn.microsoft.com/en-us/library/cc881781.aspx
Excelドキュメントを開き、空のワークシートを挿入するために、最終結果は「Excelが読み取れないコンテンツが見つかった...このワークブックのコンテンツを回復したいですか...」というメッセージです。挿入されたすべてのシートを回復すると空白です(プログラムでコンテンツを追加しても)
XLSXを.ZIPに名前に変更して検査した後、ワークシートが作成され、コンテンツが追加されたことが示されます。
同様の問題がある人はいますか?それは、新しく作成された部品間に関係を作成しないものかもしれません...
解決
そのエラーメッセージは、Excelドキュメントを構成するXMLがXMLスキーマに準拠しておらず、無効であることを意味します。使用できます XML SDK 2.0生産性ツールを開きます 問題がどこにあるかを確認します。
また、リンクの下部からコードをコピーして、クリスがコメントで言ったように動作させました。あなたのコードは以下にこのように見えますか?
// Open the document for editing.
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
{
// Add a blank WorksheetPart.
WorksheetPart newWorksheetPart =
spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
newWorksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
string relationshipId =
spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);
// Get a unique ID for the new worksheet.
uint sheetId = 1;
if (sheets.Elements<Sheet>().Count() > 0)
{
sheetId =
sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
// Give the new worksheet a name.
string sheetName = "Sheet" + sheetId;
// Append the new worksheet and associate it with the workbook.
Sheet sheet = new Sheet()
{ Id = relationshipId, SheetId = sheetId, Name = sheetName };
sheets.Append(sheet);
string docName = @"C:\Users\Public\Documents\Sheet7.xlsx";
InsertWorksheet(docName);
}
// Given a document name, inserts a new worksheet.
public static void InsertWorksheet(string docName)
{
// Open the document for editing.
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
{
// Add a blank WorksheetPart.
WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
newWorksheetPart.Worksheet = new Worksheet(new SheetData());
Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);
// Get a unique ID for the new worksheet.
uint sheetId = 1;
if (sheets.Elements<Sheet>().Count() > 0)
{
sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
}
// Give the new worksheet a name.
string sheetName = "Sheet" + sheetId;
// Append the new worksheet and associate it with the workbook.
Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName };
sheets.Append(sheet);
}
}
所属していません StackOverflow