0

openxmlsdkによって生成されているExcelスプレッドシートにページマージンを設定しようとしています。すでに存在するExcelドキュメントを開くのではなく、最初から生成されます。PageMarginsクラスを使用していますが、このインスタンスをワークシートに添付する方法がわかりません。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);

しかし、運はありません。

また、この例のコードを使用します 。ドキュメントを最初から作成する場合、OpenXMLSDKによってExcel2007ドキュメントの向きを横向きに変更してページの向きを設定する方法は機能しません。PageSetup&PageMarginインスタンスをドキュメントに追加するにはどうすればよいですか?

このSDKの知識があり、余白またはページ設定クラスの使用方法を知っている人はいますか?

4

1 に答える 1

2

ワークシートに追加される順序は重要です。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生産性ツールと一緒に使用する巧妙なトリックは、.xlsxファイルの名前を.zipに変更してから、内容を抽出することです。次に、/xl/worksheets/sheet.xmlを開き、マークアップをExcelによって作成されたExcelファイルのマークアップと比較します。

于 2011-12-10T01:14:16.537 に答える