2011-12-08 74 views
0

我正嘗試在由打開的xml sdk生成的excel電子表格上設置頁邊距。我不打開已存在的Excel文檔,它是從頭開始生成的。我正在使用PageMargins類,但不知道如何將此實例附加到工作表。 SDK生產力工具提供以下代碼:Open 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頁面增強實例添加到文檔中?

任何人都知道這個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的生產力工具,可用於被重命名.xlsx文件爲.zip,然後提取內容。然後打開/xl/worksheets/sheet.xml並將標記與由excel創建的excel文件的標記進行比較。

+0

PageMargins和PageSetup的值需要轉換嗎? (我得到一個錯誤不能隱式轉換類型'雙'到'DocumentFormat.OpenXml.UInt32Value')也在Visula Studio 2010我只有「PageMargin」,而不是「PageMargins」。 –