2016-06-15 3 views
0

私が持っているこのコード1つのインスタンスのみが、この親に許可されますが、描画部分がヌルです

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

でそれは例外」の1つのインスタンスのみを投げますタイプが「この親に許可されて

sheet1.DrawingsPartはnullであるため、他のDはありません未加工部分。どのようにこれを解決するための任意のアイデア?この正確なコードは、同じExcelファイルで、私の2番目のプロジェクトで動作しています!ありがとうございました。

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」とは何ですか? –

答えて

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メソッドが角括弧の外側にありました。私は理由を知らないが、これは私のコードを修正した。

関連する問題