2016-09-09 3 views
2

내 EPPlus 코드로 만든 스프레드 시트의 "인쇄 미리보기"시궁창/행 번호 컬럼 (컬럼 0, 말하자면)를 보여줍니다 ("균열?") 열에서 인쇄? 다음과 같이왼쪽 여백 (행 번호) 열이 인쇄되지 않도록하려면 어떻게해야합니까 (EPPlus)?</p> <p><a href="https://i.stack.imgur.com/5Kobg.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/5Kobg.png" alt="enter image description here"></a></p> <p>내가 프로그래밍 시궁창/행 번호를 방지 할 수 있습니다 방법 :

내 인쇄 설정 코드는 현재 :

private void ConfigureCustomerSheetForPrinting() 
{ 
    string columnName = GetExcelTextColumnName(customerWorksheet.Dimension.End.Column); 
    string printArea = string.Format("A1:{0}{1}", columnName, customerWorksheet.Dimension.End.Row); 
    customerWorksheet.PrinterSettings.PrintArea = customerWorksheet.Cells[printArea]; 
    customerWorksheet.PrinterSettings.FitToPage = true; 
    customerWorksheet.PrinterSettings.Orientation = eOrientation.Landscape; 
    customerWorksheet.View.ZoomScale = 100; 
    customerWorksheet.PrinterSettings.FitToPage = true; 
    customerWorksheet.PrinterSettings.FitToHeight = 100; 
    customerWorksheet.PrinterSettings.Scale = 100; 

    customerWorksheet.PrinterSettings.LeftMargin = (decimal).5/2.54M; 
    customerWorksheet.PrinterSettings.RightMargin = (decimal).5/2.54M; 
    customerWorksheet.PrinterSettings.TopMargin = (decimal).5/2.54M; 
    customerWorksheet.PrinterSettings.BottomMargin = (decimal).5/2.54M; 
    customerWorksheet.PrinterSettings.HeaderMargin = (decimal).5/2.54M; 
    customerWorksheet.PrinterSettings.FooterMargin = (decimal).5/2.54M; 
} 

답변

0

는 당신이 필요로 어떻게해야 오브젝트 PrinterSettings에 ShowHeaders라는 속성이 있습니다. 당신은 그걸 가지고있는 것 같지 않아요.

customerWorksheet.PrinterSettings.ShowHeaders = false; customerWorksheet.View.ShowHeaders = false;

당신은 ExcelPrinterSettings 수업이 더 명시 적으로 source code에서 볼 수 있습니다. 나는 당신이 열 헤더를 표시 할를 요구하고 이해하는 경우 (","B ","A "로 C"를 행 0 "을 말할

+0

번호가 지정된 열은 헤더로 간주됩니까? –

+0

실제 Excel 응용 프로그램에는 행 및 열 머리글 표시 옵션이 있으므로 EPPlus가 열 문자를 포함하는 옵션을 해제 할 가능성이 큽니다. 귀하의 질문에 답변 : 예. –

+0

아니요, 방금 그 줄을 추가하고 보고서를 다시 생성했습니다. 왼쪽에 번호가 매겨진 열이 있으므로 인쇄 여부를 제어하는 ​​"ShowHeaders"가 아닙니다. –

1

)

/// <summary> 
/// Print headings (column letter and row numbers) 
/// </summary> 
public bool ShowHeaders 
{ 
    get 
    { 
     return GetXmlNodeBool(_headersPath, false); 
    } 
    set 
    { 
     SetXmlNodeBool(_headersPath, value, false); 
    } 
} 

는 B를 도움이되기를 바랍니다 ", ...)하지만 행 머리글을 표시하지 않습니다 ("열 0 "을"1 ","2 "3"등으로 표시하십시오.) 그렇다면 그것을 수행하는 방법을 본 적이 없습니다. 행/열 머리글을 표시하거나 둘 중 하나만 표시하거나 DocumentFormat.OpenXml.Spreadsheet.PrintOptions에 따라 ShowHeaders 옵션을 사용하십시오.

내가 생각할 수있는 유일한 괜찮은 일은 다음과 같이 가짜로 만드는 것입니다. 첫 번째 설정 반복으로 행. 나뿐만 아니라 동결로 첫 번째 행을 설정하지만이 선택 사항입니다 :

enter image description here

그리고이 인쇄 미리보기에서 (내가 몇 페이지를 아래로 스크롤) : 출력이 있습니다

using (var pck = new ExcelPackage(fi)) 
{ 
    var wb = pck.Workbook; 
    var ws = wb.Worksheets.Add("Sheet1"); 

    //Make sure headers are not show 
    ws.PrinterSettings.ShowHeaders = false; 

    //Header 
    ws.Cells[1, 1].Value = "A"; 
    ws.Cells[1, 2].Value = "B"; 
    ws.Cells[1, 3].Value = "C"; 
    ws.Cells[1, 4].Value = "D"; 

    var headerrange = ws.Cells[1, 1, 1, 4]; 
    headerrange.Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; 
    headerrange.Style.Border.Top.Style = ExcelBorderStyle.Thin; 
    headerrange.Style.Border.Bottom.Style = ExcelBorderStyle.Thin; 
    headerrange.Style.Border.Left.Style = ExcelBorderStyle.Thin; 
    headerrange.Style.Border.Right.Style = ExcelBorderStyle.Thin; 

    ws.View.FreezePanes(1,4); 
    ws.PrinterSettings.RepeatRows = new ExcelAddress("$1:$1"); 

    //Some data > 1 page 
    for (var i = 0; i < 1000; i++) 
    { 
     ws.Cells[2 + i, 1].Value = DateTime.Now.AddDays(i); 
     ws.Cells[2 + i, 2].Value = i; 
     ws.Cells[2 + i, 3].Value = i*100; 
     ws.Cells[2 + i, 4].Value = Path.GetRandomFileName(); 
    } 

    //Save it 
    pck.Save(); 
} 

:

enter image description here

+0

코드의 어느 부분에서 행 번호 열 ("행 머리글"이라고도 함)을 제거 할 수 있습니까? –

+1

@ B.ClayShannon 위의 대답에'ws.PrinterSettings.ShowHeaders = false;'줄을 추가했습니다. 그것은 EPPlus에 의해 새로 생성 된 시트라면 필요하지 않습니다. 그러나 기존 시트를 편집하여 편집하려면 해당 라인이 필요합니다. 감사합니다, Ernie; – Ernie

+0

; 당신의 대답은 좀 더 광범위하지만, 다른 고양이에게 현상금을 내야 만했던 것처럼 느껴졌습니다. 처음에는 효과가 없었던 이유가 없습니다.하지만 그 후에 그랬습니다. 나는 여전히 행 번호가 "헤더"인 "균열"열을 부르는 것이 잘못되지 않는다면 혼란 스럽다고 생각합니다. 그게 내 개념적 실명의 원인 이었어. –

관련 문제

 관련 문제