2016-03-18 13 views
2

Ich möchte ein Bild (Anzeige "ENTWURF") durch druckbares Excel-Arbeitsblatt in C# EPPlus hinzufügen.So erhalten Sie die Zeilennummer der letzten Zeile beim Drucken eines Excel-Blattes (EPPlus)

Ich muss wissen, wenn es eine Möglichkeit gibt, die letzte sichtbare Zeile jeder Seite eines Arbeitsblatts zu finden, wenn Sie es drucken. Ich kann nicht behaupten, dass es immer eine feste Anzahl von Zeilen pro Seite sein wird, weil es vom Inhalt der Zellen abhängt.

Hier ist mein aktueller Code, der eine feste Anzahl von Zeilen pro Seite (30) verwendet, um ein Bild einzufügen. Dies führt zu ungefähr einem Bild pro druckbarer Seite, mit der Ausnahme, dass das Bild in jeder neuen Seite nicht an der gleichen Stelle ist. (Ein wenig aus, je nach Inhalt der Zellen.)

public void InsertDraftImage(ExcelWorksheet worksheet, FileInfo draft_image) 
{ 

    int maxRowNumber = worksheet.Dimension.End.Row; 
    int rowByPage = 30; 
    int numberOfPage = (maxRowNumber/rowByPage) + 1; 


    ExcelPicture picture = null; 
    for(int i = 0; i < numberOfPage; i++) 
    { 
     if(draft_image != null) 
     { 
      picture = worksheet.Drawings.AddPicture(i.ToString(), draft_image); 
      picture.SetSize(609, 545); //original image size 
      picture.SetPosition(i * rowByPage, 0, 1, 0); 
      picture.EditAs = eEditAs.Absolute; 
     } 
    } 
+1

Wie wäre es mit dieser Fußzeile, so dass sie automatisch am Ende jeder Seite erscheint? [Verwandte Antwort] (http://stackoverflow.com/a/14524378/4879022) – Spidey

+0

Ich möchte ein Bild hinzufügen, das einen großen Bereich über jeder Seite abdeckt, so dass der Benutzer weiß, die Daten wegen des großen Bildes nicht zu verwenden " Entwurf". Ich weiß nicht, ob ein Footer wirklich kann, was ich will? – pikarie

+0

Sie meinen Wasserzeichen auf der ganzen Seite? – Spidey

Antwort

0

Nach dem Versuch, den fehlenden Code in ‚ExcelHeaderFooter.cs‘ aus dem EPPlus mit einem Arbeitskollegen ohne Erfolg zu realisieren, haben wir es schließlich taten suggestiv Ernie folgenden !!

Es gibt meinen endgültigen Code, um ein Bild in jede Seite einer druckbaren Excel-Datei einzufügen, die mit EPPlus in C# erzeugt wird.

Es wird getan, indem man das Bild in der Fußzeile hinzufügt und den Boolean ScaleWithDoc auf false setzt (default = true).

public void InsertDraftImage(ExcelWorksheet worksheet, FileInfo draft_image) 
{ 
    ExcelHeaderFooterText footer = worksheet.HeaderFooter.OddFooter; //all page have same footer 
    footer.InsertPicture(draft_image, PictureAlignment.Centered); 
} 

Added dieser Code in meiner Methode die ExcelWorksheet (alle anderen Excel-Stil, bevölkern, Einstellungen) zu erstellen.

XmlAttribute temp = worksheet.WorksheetXml.CreateAttribute("scaleWithDoc"); 
temp.Value = "0"; 
worksheet.WorksheetXml.GetElementsByTagName("headerFooter")[0].Attributes.Append(temp); 

package.Save();