2017-12-22 18 views
0

mxdのpagelayoutにExcelシートを追加する方法の方向性を探しています。 arcmapインターフェースを通して利用可能な機能によく似ています。C#Arcobjects:pagelayoutにExcelオブジェクトを挿入します。

私はC#arcobjects(10.5)を使用しており、MXDをメモリにロードしています。その時、私はpagelayoutにExcelを追加し、PDFにエクスポートします。

私は 'rawSrc'変数をキャストすると、nullです。助けのための

IPageLayout pageLayout = myMXD.PageLayout; 
IGraphicsContainer graphicsContainer = pageLayout as IGraphicsContainer; 

      RectangleElement ExcelSrc = new RectangleElement(); 

      double posX = 0.8008; 
      double posY = 6.9567; 
      double Legwidth = 4.8; 
      System.Double w = 11.0301; 
      System.Double h = 9.0949; 

      System.Double aspectRatio = w/h; 
      var envelope = new EnvelopeClass(); 
      envelope.PutCoords(posX, posY, (posX * Legwidth), (posY * Legwidth/aspectRatio)); 
      ExcelSrc.Geometry = envelope; 

      string xcelPath = System.IO.Path.Combine("string to my directory", "Data.xlsx"); 

      var rawSrc = new XLWorkbook(xcelPath).Worksheet("Table"); 

      IVariantStream blobStream = new VariantStreamIOClass(); 
      blobStream = rawSrc as IVariantStream; 

      ExcelSrc = blobStream.Read() as RectangleElement; 

      graphicsContainer.AddElement(((IElement)ExcelSrc), 0); 

      ((IActiveView)myMXD.PageLayout).PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null); 
      myMXD.Save(); 

      Marshal.FinalReleaseComObject(blobStream); 

ありがとう:私は正しいIElementタイプが何であるかわかりません。

+0

"キャスト時にnullです"キャストは何ですか?あなたはどこで 'ヌル'を得ますか? – HimBromBeere

+0

@HimBromBeereありがとうございます。私はより明確になるように投稿を更新しました。 – Arnej65

答えて

0

Excelに実際のシート名を書き込んでください。 シート名が "sheet1"の場合は書きます。

var rawSrc = new XLWorkbook(xcelPath).Worksheet( "sheet1");

+0

ありがとう、私はすでにそれを持っています。 var rawSrc =新しいXLWorkbook(xcelPath).Worksheet( "Table"); rawSrcは正しく値を持っています、それはnullになるgis要素にキャストしようとするときです。 – Arnej65

+0

申し訳ありません:(@ Amej65 –

関連する問題