我有这段代码
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>();
它会引发异常&#34;该父级&#34;
只允许该类型的一个实例和
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);
}
我无法编写更多代码,因为它不是开源项目。基本上我通过输入工作表名称得到工作表和工作表部分,然后我必须在某个单元格中插入图片。
答案 0 :(得分:1)
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方法在括号之外。我不知道为什么,但这修复了我的代码。