Laden...

Neue Seite in Excel

Erstellt von NeueWelt vor 10 Jahren Letzter Beitrag vor 10 Jahren 4.086 Views
N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 10 Jahren
Neue Seite in Excel

Hallo,

ich hab mal eine vermutlich leichte Frage!?

Wie kann ich per C# einen Seitenumbruch in Excel machen?

Also ich fülle die erste Seite halb, und will dann am Anfang der zweiten Seite weiterschreiben.

Schonmal Danke & Gruß

mfg

1.696 Beiträge seit 2006
vor 10 Jahren

Hallo,

versuch mal mit

objWorksheet.Rows[rowNumber].PageBreak = (int)Excel.XlPageBreak.xlPageBreakManual;

Grüße

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

114 Beiträge seit 2009
vor 10 Jahren

Die Infos sind ein bisschen sperrlich. Wie greifst du auf das Excel-Dokument zu? Wenn du z.B. ADO.NET verwendest kannst du doch nach X Zeilen einfach eine neues Sheet beginnen.

Grüße

N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 10 Jahren

Hallo,
erstmal danke für die Antworten.

habe Excel im Projekt als Verweis eingebunden.

   Excel.Application myExcelApplication;
                Excel.Workbook myExcelWorkbook;
                Excel.Worksheet myExcelWorkSheet;
                myExcelApplication = null;

                try
                {
                    // First Contact: Excel Prozess initialisieren
                    myExcelApplication = new Excel.Application();
                    myExcelApplication.Visible = false;
                    //myExcelApplication.ScreenUpdating = true;


                    // Excel Datei anlegen: Workbook
                    var myCount = myExcelApplication.Workbooks.Count;
                    myExcelWorkbook = (Excel.Workbook)(myExcelApplication.Workbooks.Add(System.Reflection.Missing.Value));
                    myExcelWorkSheet = (Excel.Worksheet)myExcelWorkbook.ActiveSheet;

                    //Datei-Kopf erstellen
                    myExcelWorkSheet.Cells[1, 1] = "Abrechnungszeitraum"; myExcelWorkSheet.Cells[1, 2] = periode;

wenn ich jetzt versuche,
myExcelWorkSheet.Rows[k].PageBreak = (int)Excel.XlPageBreak.xlPageBreakManual;

kennt er kein PageBreak, was genau muss ich tun?

danke & Gruß

mfg

1.696 Beiträge seit 2006
vor 10 Jahren

Hallo,

die Intellisense von VS zeigt zwar nicht an, aber funktionieren tut es, oder was hast du für Fehlermeldung erhalten?

Grüße

Edit: zur Kontrolle kannst du auch myExcelApplication.Visible = true; schalten 😉

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 10 Jahren

Morgen,

Er zeigt mir folgende Fehlermeldung:

Fehler 1 "object" enthält keine Definition für "PageBreak", und es konnte keine Erweiterungsmethode "PageBreak" gefunden werden, die ein erstes Argument vom Typ "object" akzeptiert. (Fehlt eine Using-Direktive oder ein Assemblyverweis?)

muss ich dafür vll noch einen Verweis einbinden?

danke & Gruß

mfg

114 Beiträge seit 2009
vor 10 Jahren

Ich würde mir mal die entsprechende Dokumentation im MSDN anschauen.

Soweit ich das sehe setzt du xlPageBreakManual nur den Type des Breaks. Wo der Umbrauch erfolgen soll, wird in der Collection HPageBreaks festgelegt.

Grüße

1.696 Beiträge seit 2006
vor 10 Jahren

muss ich dafür vll noch einen Verweis einbinden?

Der Verweis auf Microsoft.Office.Interop.Excel sollte reichen, du kannst auch ohne Verweis arbeiten, du musst dann nur den kompletten Namespace angeben. Hab grad getestet, es funktioniert so wie ich gezeigt habe.


            Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
            excel.Visible = true;
            Microsoft.Office.Interop.Excel.Workbook wb = excel.Workbooks.Add(System.Reflection.Missing.Value);
            Microsoft.Office.Interop.Excel.Worksheet ws = (Microsoft.Office.Interop.Excel.Worksheet)wb.ActiveSheet;//wb.Worksheets["Tabelle1"];
            ws.Cells[1, 1].Value = "Test";
            ws.Rows[5].PageBreak = (int)Microsoft.Office.Interop.Excel.XlPageBreak.xlPageBreakManual;

Gruß

Ich bin verantwortlich für das, was ich sage, nicht für das, was du verstehst.

**:::

N
NeueWelt Themenstarter:in
54 Beiträge seit 2011
vor 10 Jahren

hallo,

hab den Code von dir genau so mal kopiert, aber er bringt mir immer noch den Fehler das er PageBreak nicht kennt.

so scheint es zu funtkionieren:


 myExcelWorkSheet.HPageBreaks.Add(myExcelWorkSheet.Rows[k]);
myExcelWorkSheet.HPageBreaks[1].Location.PageBreak = (int)Excel.XlPageBreak.xlPageBreakManual;

Meine nächste frage wäre jetzt wie ich HPageBreaks wieder leeren kann. Es gibt keine Clear Methode dafür.

myExcelWorkSheet.ResetAllPageBreaks();

scheint auch nicht zu funktionieren.

Danke & Gruß

mfg

114 Beiträge seit 2009
vor 10 Jahren

Wenn IntelliSense nicht funktioniert würde ich mal die entsprechende HPageBreak Interface Dokumentation versuchen. Die Methode Delete sieht recht vielversprechend aus.