2011-12-08 3 views
0

open xml SDK에 의해 생성되는 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 을 설정하십시오. PageSetupPageMargin 인스턴스를 문서에 어떻게 추가합니까?

누구나이 SDK에 대해 알고 있고 여백 또는 페이지 설정 클래스를 사용하는 방법을 알고 있습니까?

답변

1

워크 시트에 추가되는 순서가 중요합니다. PageMargins는 PageSetup 전에 추가해야하며 둘 다 SheetData 다음에 있어야합니다. 또한 모든 설정을 지정해야합니다. 다음, .zip으로하는 .XLSX 파일의 이름을 압축을 풉니 다

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 생산성 도구와 함께 사용되는 :이 코드를 사용했다. 그런 다음 /xl/worksheets/sheet.xml을 열고 마크 업과 Excel에서 만든 Excel 파일의 마크 업을 비교합니다.

+0

PageMargins 및 PageSetup의 값을 변환해야합니까? (나는 잘못된 형식을 'Double'을 'DocumentFormat.OpenXml.UInt32Value'로 암묵적으로 변환 할 수 없습니다.) Visula Studio 2010에서도 "PageMargin"이 아니라 "PageMargins"만 있습니다. –