2016-09-09 17 views
2

«Предварительный просмотр» из таблицы, созданной с моим EPPlus кода показывает номер столбца водосток/строка (столбец 0, так сказать):Как предотвратить публикацию столбца слева (колонка) столбца (EPPlus)?

enter image description here

Как программно предотвратить водосточные/номер строки («трещина?») от печати?

Мой печати код установки в настоящее время выглядит следующим образом:

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

Существует свойство называется ShowHeaders в PrinterSettings объект, который должен делать то, что вам нужно. Кажется, у вас его нет, так что вы можете этого не заметить.

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

Вы можете увидеть это более явно в source code в ExcelPrinterSettings классе.

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

Надеется, что это помогает Б.;)

+0

Пронумерованный столбец считается заголовком? –

+0

В реальном приложении Excel есть опция «Показать строки и заголовки столбцов», поэтому, скорее всего, EPPlus отключает эту опцию, которая также включает букву столбца. Ответ на ваш вопрос: Да. –

+0

Нет, я просто добавил эту строку и регенерировал отчет, и он по-прежнему имеет нумерованный столбец в крайнем левом углу, так что это не «ShowHeaders», который контролирует, печатается ли это или нет. –

1

Если я понимаю, что вы просите вы хотите, чтобы показать заголовки столбцов (скажем, «Row 0», как «A», «B», «C ", ...), но НЕ показывать заголовки строк (например," Столбец 0 "как" 1 "," 2 "3" и т. д.). Если это так, я никогда не видел способа сделать это. заголовок строки/столбца или показать оба, но не либо, либо в соответствии с DocumentFormat.OpenXml.Spreadsheet.PrintOptions. В принципе, опция ShowHeaders, о которой вы и Ричардо говорили.

Единственная достойная работа, о которой я могу думать, - это подделать ее чем-то вроде этого. включает настройку первого строка как повтор. Я установил первый ряд как заморожен, но это не является обязательным:

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

И это при предварительном просмотре (я прокрутила несколько страниц) :

enter image description here

+0

Какая часть вашего кода избавляется от столбца номера строки (что вы называете «заголовками строк»)? –

+1

@ B.ClayShannon Я добавил строку 'ws.PrinterSettings.ShowHeaders = false;' к моему ответу выше. Это не нужно, если это новый лист EPPlus. Но если вы редактируете существующий лист с включенным, тогда вам понадобится эта строка. – Ernie

+0

Спасибо, Эрни; ваш ответ более обширен, но я чувствовал, что должен был дать щедрость другому коту, как это было на первом месте, и у меня нет причин, по которым он не работал в первый раз, но после этого. Я все еще думаю, что называть столбец «трещины» номерами строк «заголовок» запутан, если не ошибаться. Вот что вызвало мою концептуальную слепоту. –

 Смежные вопросы

  • Нет связанных вопросов^_^