2016-04-11 6 views
-1

Mit Excel Interop, kann ich mit dem Code für den Druck wie folgt ein Blatt konfigurieren:Wie kann ich den Druckbereich und andere Druckeigenschaften eines Blattes mit Spreadsheet Light konfigurieren?

_xlSheetPlatypus.PageSetup.PrintArea = "A1:" + 
    GetExcelTextColumnName(
     _xlSheetPlatypus.UsedRange.Columns.Count) + 
     _xlSheetPlatypus.UsedRange.Rows.Count; 
_xlSheetPlatypus.PageSetup.Orientation = Excel.XlPageOrientation.xlLandscape; 
_xlSheetPlatypus.PageSetup.Zoom = false; 
_xlSheetPlatypus.PageSetup.FitToPagesWide = 1; 
_xlSheetPlatypus.PageSetup.FitToPagesTall = 100; 

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

_xlSheetPlatypus.PageSetup.PrintTitleRows = String.Format("${0}:${0}", CUSTOMER_HEADING_ROW); 

ich glaube, ich kann so ziemlich emulieren, dass mit diesem Code mit Tabellenkalkulations-Light:

SLPageSettings ps = new SLPageSettings(); 
// PrintArea 
// ??? 

// PrintTitleRows 
ps.PrintHeadings = true; 
ps.SetCenterHeaderText(String.Format("${0}:${0}", CUSTOMER_HEADING_ROW); 

// Margins 
ps.SetNarrowMargins(); 
ps.TopMargin = 0.5; 
ps.BottomMargin = 0.5; 
ps.LeftMargin = 0.5; 
ps.RightMargin = 0.5; 
ps.HeaderMargin = 0.5; 
ps.FooterMargin = 0.5; 

// Orientation 
ps.Orientation = OrientationValues.Landscape; 

// Zoom 
//psByCust.ZoomScale = what should this be? Is not a boolean... 

// FitToPagesWide 
//psByCust.FitToWidth = ; "cannot be assigned to" so how can I set this? 

// FitToPagesTall 
//psByCust.FitToHeight = 100; "cannot be assigned to" so how can I set this? 

Ich bin nicht sicher über viele von diesen, vor allem die Ersatz-Code für "PrintTitleRows" ("PrintHeadings" und "SetCenterHeaderText"), aber eine Sache scheint völlig in Spreadsheet Light fehlt, nämlich "PrintArea".

Auch, was sollte der "Zoom" Wert sein? Und was entspricht "FitToPagesWide" und "FitToPagesTall"?

Was ist die analoge Möglichkeit, dasselbe mit Spreadsheet Light zu erreichen? Oder bestimmt Spreadsheet Light automatisch den zu druckenden Bereich anhand nicht leerer Zellen?

Antwort

1

Ich kann mit einigen von diesen helfen. Zuerst, Print Area.

Als Vincent says: Regel 1: Alles beginnt und endet mit SLDocument

SLDocument myWorkbook = new SLDocument(); 
myWorkbook.SetPrintArea("A1", "E10"); 
// or 
myWorkbook.SetPrintArea(1, 1, 10, 5); 

Next: Fit zu Seiten:

SLPageSettings settings = new SLPageSettings(); 
settings.ScalePage(2, 3) // print 2 pages wide and 3 long 
// There is no info on how to just scale in one dimension, I would use 
// a definitely too big™ number in the field you don't care about 
// Eg for fit all columns on one page: 
settings.ScalePage(1, 99999); 

Zoom ist eine Ansicht, AFAIK (nicht drucken) Sache und sein kann Sie haben zwischen 10 und 400 gewechselt, um den Zoom-Prozentsatz festzulegen - dies entspricht beim Blättern in einer Tabelle dem Ctrl-Scrolling.

PrintHeadings zeigt die Zeilen- (1, 2, 3, ...) und Spaltenüberschriften (A, B, C, ...) an, wenn Sie drucken, damit Sie den Wert in zB D25 einfacher sehen können.

Für Titel drucken, verwenden Sie die Set <Position> Header in SLPageSettings:

settings.SetCenterHeaderText("My Workbook Title"); 

Ähnlich SetLeftHeaderText und SetRightHeaderText

Ich weiß nicht, wie 'RowsToRepeatAtTop' gesetzt und 'ColumnsToRepeatAtLeft', die würde mit den PrintTitleRows von Interop übereinstimmen.

ProTip: Die chm Hilfedatei, die mit SpreadsheetLight kommt, ist sehr nützlich.