2011-12-08 4 views
0

open xml sdkによって生成されているExcelスプレッドシートにページ余白を設定しようとしています。私は既に存在するExcel文書を開くのではなく、最初から生成されます。私はPageMarginsクラスを使用していますが、このインスタンスをワークシートに添付する方法がわかりません。 SDK生産性ツールは、次のコードを提供します。XML SDKのページ余白を開く

PageMargins pageMargins1 = worksheet.GetFirstChild<PageMargins>(); 
pageMargins1.Left = 0.45D; 
pageMargins1.Right = 0.45D; 
pageMargins1.Top = 0.5D; 
pageMargins1.Bottom = 0.5D; 

GetFirstChild()関数はnullを返します。私もやろうとしました

worksheet.Append(pageMargins1); 

運がありません。

また、この例のコードを使用してください:How change excel 2007 document orientation to landscape by OpenXML sdk ドキュメントを最初から作成する場合、ページの向きを設定することはできません。どのようにPageSetup & PageMarginインスタンスをドキュメントに追加しますか?

このSDKの知識があり、マージンやページ設定クラスの使い方を知っている人はいますか?

答えて

1

ワークシートに物事が追加される順序は重要です。 PageMarginsはPageSetupの前に追加する必要があり、両方ともSheetDataの後ろにある必要があります。また、すべての設定を行う必要があります。私はこのコードを使用する:

PageMargins pageMargins1 = new PageMargins(); 
pageMargins1.Left = 0.45D; 
pageMargins1.Right = 0.45D; 
pageMargins1.Top = 0.5D; 
pageMargins1.Bottom = 0.5D; 
pageMargins1.Header = 0.3D; 
pageMargins1.Footer = 0.3D; 
worksheetPart.Worksheet.AppendChild(pageMargins1); 

PageSetup pageSetup = new PageSetup(); 
pageSetup.Orientation = OrientationValues.Landscape; 
pageSetup.FitToHeight = 2; 
pageSetup.HorizontalDpi = 200; 
pageSetup.VerticalDpi = 200; 
worksheetPart.Worksheet.AppendChild(pageSetup); 

SDKの生産性ツールと一緒に使用するニートトリック内容を抽出し、次いで、.zipにの.xlsxファイルの名前を変更することです。 /xl/worksheets/sheet.xmlを開いて、マークアップとExcelで作成したExcelファイルのマークアップを比較します。

+0

PageMarginsとPageSetupの値を変換する必要がありますか?私はVisula Studio 2010でも暗黙的に 'double'を 'DocumentFormat.OpenXml.UInt32Value'に変換することはできません。 –

関連する問題