strong text我正在尝试创建并写入Excel。对于模板,我只是从OPENXML Productivity工具中复制了现有Excel文件的代码,然后修改了代码,以便在从该代码创建新文件时添加数据行。但是,我似乎在使其正常工作时遇到了一些问题。我不断收到
c无法打开文件:零件/XL/工作表/工作表2:根元素缺少替换部件:/xl/worksheets/sheet2.xml部分存在XML错误。文档只能包含一个根元素。行1,列0。
错误,我仍然无法正确调试。此外,在原来的模板,有3个工作表在我的工作簿。我确保删除其中两个,这样我就可以只有一个创建的代码,因为我假定OpenXML2.0Productivity工具只为文档代码放在一起时存在的工作表生成代码。但发生的是,生成的文件有所有4个原始表到位,但似乎无法把每个标题放在一起。
想得到一些提示,到哪里去找到这个问题并修复它。提前感谢。
public void CreatePackage(string filePath)
{
using (SpreadsheetDocument package = SpreadsheetDocument.Create(filePath, SpreadsheetDocumentType.Workbook))
{
CreateParts(package);
}
}
private void CreateParts(SpreadsheetDocument document)
{
ExtendedFilePropertiesPart extendedFilePropertiesPart1 = document.AddNewPart<ExtendedFilePropertiesPart>("rId3");
GenerateExtendedFilePropertiesPart1Content(extendedFilePropertiesPart1);
WorkbookPart workbookPart1 = document.AddWorkbookPart();
GenerateWorkbookPart1Content(workbookPart1);
WorkbookStylesPart workbookStylesPart1 = workbookPart1.AddNewPart<WorkbookStylesPart>("rId3");
GenerateWorkbookStylesPart1Content(workbookStylesPart1);
ThemePart themePart1 = workbookPart1.AddNewPart<ThemePart>("rId2");
GenerateThemePart1Content(themePart1);
WorksheetPart worksheetPart1 = workbookPart1.AddNewPart<WorksheetPart>("rId1");
GenerateWorksheetPart1Content(worksheetPart1);
WorksheetCommentsPart worksheetCommentsPart1 = worksheetPart1.AddNewPart<WorksheetCommentsPart>("rId2");
GenerateWorksheetCommentsPart1Content(worksheetCommentsPart1);
VmlDrawingPart vmlDrawingPart1 = worksheetPart1.AddNewPart<VmlDrawingPart>("rId1");
GenerateVmlDrawingPart1Content(vmlDrawingPart1);
SharedStringTablePart sharedStringTablePart1 = workbookPart1.AddNewPart<SharedStringTablePart>("rId4");
GenerateSharedStringTablePart1Content(sharedStringTablePart1);
SetPackageProperties(document);
}
3条答案
按热度按时间jhkqcmku1#
问题出在构建XML的方式上;正如错误所解释的,XML必须有一个根元素。2让我给予你一些例子:
有效的XML文档:
无效的XML文件:
在第一个示例中,文档中的每个元素都是用户的子元素,而在第二个示例中,有两个用户。
06odsfpq2#
如果让我猜的话--这个错误是由于您删除了
注意,我把你的代码中的1替换成了2。
你会看到的是
部分。在有一个地方,他们有多个工作表生成(不是工作表生成,这是你删除的部分)
工作表初始值设定项中的ID实际上是对工作簿ID的引用。由于您删除了GenerateWorkbookPart 2Content函数,因此该引用是错误的。
啊,软引用的问题...
在Microsoft的示例代码中,它们用途:
这仍然是一个软引用,但至少没有硬编码。)
pwuypxnk3#
只是一个供参考的任何人谁得到这个necrothread在他们的谷歌结果。
如果XML文件中没有实际数据,也会发生此错误。Excel会将此错误报告为根目录太多,而实际问题根本没有。