该父级仅允许使用该类型的一个实例,但图形部分为null [英] Only one instance of the type is allowed for this parent, but drawing part is null

查看:91
本文介绍了该父级仅允许使用该类型的一个实例,但图形部分为null的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这个代码

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>();

它引发异常该父级只允许使用该类型的一个实例"

it throws an Exception " Only one instance of the type is allowed for this parent"

sheet1.DrawingsPart为null,因此没有其他Drawing部件.知道如何解决这个问题吗?这个确切的代码在我的第二个项目中使用相同的excel文件工作!谢谢.

sheet1.DrawingsPart is null, so there is no other Drawing part. Any idea how to solve this? This exact code is working in my second project, with same excel file! Thank you.

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);
        }

我不能编写更多代码,因为它不是开源项目.基本上,我通过输入工作表名称来获得工作表和工作表部分,然后我必须在某些单元格中插入图片.

I can't write more codes, because it is not open source project. Basically I get worksheet and worksheet part by typing sheet name, and after that i have to insert picture in some cell.

推荐答案

WorkbookPart wbPart;

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方法不在方括号内.我不知道为什么,但是这固定了我的代码.

This fixed it. InsertImage method was outside of the brackets. I don't know why, but this fixed my code.

这篇关于该父级仅允许使用该类型的一个实例,但图形部分为null的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆