2016-11-08 4 views
0

는 범위의 페이지 나눔 속성은 xlPageBreakManual로 설정할 수 있습니다 다음 페이지가과 같이 코드를 중단하는 위치를 지정할 수 있습니다피벗 테이블 (Excel Interop)에 수동 페이지 나누기를 추가 할 수 있습니까? 프로그래밍 "정상"엑셀 시트를 생성

workbook.Worksheets[0].VPageBreaks.Add(sheet.Range["G1"]); 

을 ...하지만 이것이다 피벗 테이블을 인쇄 할 때 가능합니까? PivotTable은 데이터 소스 (필자가 나중에 숨길 수있는 "원시 데이터"페이지)에서 제공되기 때문에 필자는 생각하지 않을 것입니다.하지만 그렇다면 어떻게 사용하고 싶은지 알고 싶습니다.

내가 인쇄를 위해 PivotTablized 시트를 준비하기 위해 지금 무엇을 :

private void FormatPivotTable() 
{ 
    . . . 
    ConfigureForPrinting(_xlPivotTableSheet.UsedRange.Rows.Count); 
} 

private void ConfigureForPrinting(int finalRow) 
{ 
    string lastColumn = GetExcelTextColumnName(_xlPivotTableSheet.UsedRange.Columns.Count); 
    string printArea = String.Format("A1:{0}{1}", lastColumn, finalRow); 
    _xlPivotTableSheet.PageSetup.PrintArea = printArea; 
    _xlPivotTableSheet.PageSetup.Orientation = XlPageOrientation.xlLandscape; 
    _xlPivotTableSheet.PageSetup.Zoom = false; 
    _xlPivotTableSheet.PageSetup.FitToPagesWide = 1; 
    _xlPivotTableSheet.PageSetup.FitToPagesTall = 50; 

    _xlPivotTableSheet.PageSetup.LeftMargin = _xlApp.Application.InchesToPoints(0.5); 
    _xlPivotTableSheet.PageSetup.RightMargin = _xlApp.Application.InchesToPoints(0.5); 
    _xlPivotTableSheet.PageSetup.TopMargin = _xlApp.Application.InchesToPoints(0.5); 
    _xlPivotTableSheet.PageSetup.BottomMargin = _xlApp.Application.InchesToPoints(0.5); 
    _xlPivotTableSheet.PageSetup.HeaderMargin = _xlApp.Application.InchesToPoints(0.5); 
    _xlPivotTableSheet.PageSetup.FooterMargin = _xlApp.Application.InchesToPoints(0.5); 

    string rangeToRepeat = string.Format("$A$6:${0}$7", lastColumn); 
    _xlPivotTableSheet.PageSetup.PrintTitleRows = rangeToRepeat; 
} 

어떤 사용자가 원하는 것은 데이터의 각 논리 블록, 시트에 함께 보관해야한다는 것입니다 블록 (5 행 있도록)는 둘 이상의 시트에 걸쳐 있지 않습니다. IOW, 블록이 시작될 때 현재 페이지에 5 행 미만의 공간이 있으면 페이지 나누기가있는 다음 페이지로 건너 뜁니다.

피벗 테이블에서 가능합니까?

답변

2

나는 "데이터의 논리 블록"이 일 때을 가리킬 때 PivotFieldItem에 해당하는 데이터를 의미한다는 것을 알고 있습니다. 그런 경우가 있다면 이것을 시도 :

PivotTable 속성을 설정 TRUE에 : 또한 TRUE 당신이 거기 때마다 페이지 나누기를 설정할 PivotFieldLayoutPageBreak 속성을 설정

ActiveSheet.PivotTables("PivotTable1").PrintTitles = True 
ActiveSheet.PivotTables("PivotTable1").RepeatItemsOnEachPrintedPage = True 

을 항목의 변화 :

ActiveSheet.PivotTables("PivotTable1").PivotFields("Class").LayoutPageBreak = True 
또한

항목은와 있습니다 경우 TRUE이 속성을 설정해야합니다 하나의 기록.

ActiveSheet.PivotTables("PivotTable1").PivotFields("Class").LayoutBlankLine = True 

필요 "PivotTable1"와 "클래스"값을 교체 명령이 위의 VBA에 있지만 그들이 당신에게 사용하여 이러한 속성을 설정하는 방법에 대한 좋은 아이디어를 줄 것이다 C#