该父类只允许有一个types的实例,但绘图部分为空

我有这个代码

ImagePartType ipt = ImagePartType.Jpeg; DrawingsPart drawingsPart1; ImagePart imagePart1; WorksheetDrawing worksheetDrawing1; if (sheet1.DrawingsPart == null) { drawingsPart1 = sheet1.AddNewPart<DrawingsPart>(); imagePart1 = drawingsPart1.AddImagePart(ipt, sheet1.GetIdOfPart(drawingsPart1)); worksheetDrawing1 = new WorksheetDrawing(); } 

但在

 drawingsPart1 = sheet1.AddNewPart<DrawingsPart>(); 

它会抛出一个exception“只允许这个父types的一个实例”

sheet1.DrawingsPart为null,所以没有其他的绘图部分。 任何想法如何解决这个问题? 这个确切的代码是在我的第二个项目中工作,具有相同的Excel文件! 谢谢。

 using (SpreadsheetDocument document = SpreadsheetDocument.Open(outputDocumentStream, true)) { wbPart = document.WorkbookPart; document.Close(); } sheet1 = GetWorksheetPart(wbPart, "Sheet1") 

 public WorksheetPart GetWorksheetPart(WorkbookPart workbookPart, string sheetName) { string relId = workbookPart.Workbook.Descendants<Sheet>().First(s => sheetName.Equals(s.Name)).Id; return (WorksheetPart)workbookPart.GetPartById(relId); } 

我不能写更多的代码,因为它不是开源项目。 基本上我通过input工作表名称来获取工作表和工作表部分,之后我必须在某个单元格中插入图片。

WorkbookPart wbPart;

  using (SpreadsheetDocument document = SpreadsheetDocument.Open(outputDocumentStream, true)) { wbPart = document.WorkbookPart; InsertImage(GetWorksheetPart(wbPart, sheetNameTopLeft), (int)topLeftRow - 1, (int)topLeftColumn - 1, (int)bottomRightRow - 1, (int)bottomRightColumn - 1, imageStream); //, 250, 200); document.Close(); } 

这固定它。 InsertImage方法在方括号之外。 我不知道为什么,但是这固定了我的代码。