"Tytuł wydruku" na każdej stronie?

0

Witam!

Mam nie mały problem, szukałem sporo na ten temat ale nic co by mi jednoznacznie pomogło nie znalazłem więc zwracam się do was :)

Mianowicie mam wygenerowany dokument Excel a w nim dane z dataGridView jest to dość spora tabelka i wszystko pięknie ale potrzebuję dodać jeszcze mały dodatek, mianowicie aby na każdej kartce był "tytuł" i nie wiem jak to ugryźć. Mam nadzieje że w miarę jasno napisałem o co mi chodzi Tytuł, dane kartka się kończy znów tytuł i dalsza część tabeli...

Jeśli ktoś ma jakiś ciekawy pomysł jak można by takie coś zrobić będę wdzięczny za podzielenie się nim :)

Pozdrawiam.

0

A to nie pomaga?
https://msdn.microsoft.com/en-us/library/office/ff839961.aspx

EDIT:
A to jest VBA - nie zauważyłem. Nie ma to odpowiedników w C# przypadkiem? ;)

Jak właściwie generujesz ten plik excela?

0
private void eksportujDaneDoExcelToolStripMenuItem_Click(object sender, EventArgs e) // Eksport do Excela
        {
            //Create an Excel App
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

            Workbook wb = xlApp.Workbooks.Add(XlSheetType.xlWorksheet);
            Worksheet ws = (Worksheet)xlApp.ActiveSheet;
            //Scalanie
            ws.Range["A1:A2"].Merge();
            ws.Range["B1:B2"].Merge();
            ws.Range["C1:D1:E1"].Merge();
            ws.Range["F1:G1:H1:I1"].Merge();
            ws.Range["J1:K1"].Merge();
            ws.Range["N1:O1"].Merge();
            ws.Range["P1:Q1:R1"].Merge();
            //Uzupełnienie na sztywno
            ws.Cells[1, 1] = "L.p";
            ws.Cells[1, 2] = "Dłużnik";
            ws.Cells[1, 3] = "Saldo początkowe";
            ws.Cells[1, 6] = "Przypisy";
            ws.Cells[1, 10] = "Odpisy";
            ws.Cells[1, 12] = "Do wpłaty";
            ws.Cells[1, 13] = "Do zwrotu";
            ws.Cells[1, 14] = "Wpłaty/Zwroty";
            ws.Cells[1, 16] = "Saldo końcowe";
            ws.Cells[2, 3] = "Odsetki";
            ws.Cells[2, 4] = "Zaległości";
            ws.Cells[2, 5] = "Nadpłaty";
            ws.Cells[2, 6] = "Temin\npłatności";
            ws.Cells[2, 7] = "Liczba\ndni";
            ws.Cells[2, 8] = "Liczba\ngodzin";
            ws.Cells[2, 9] = "Suma";
            ws.Cells[2, 10] = "Liczba\ndni/go";
            ws.Cells[2, 11] = "Suma";
            ws.Cells[2, 12] = "Suma";
            ws.Cells[2, 13] = "Suma";
            ws.Cells[2, 14] = "Data\nwpłaty";
            ws.Cells[2, 15] = "Suma";
            ws.Cells[2, 16] = "Odsetki";
            ws.Cells[2, 17] = "Zaległości";
            ws.Cells[2, 18] = "Nadpłaty";
            //Uzupełnienie danych z dataGridView
            for (int j = 3; j <= dataGridView1.Rows.Count+1; j++)
            {
                for (int i = 1; i <= 18; i++)
                {
                    ws.Cells[j, i] = dataGridView1.Rows[j - 3].Cells[i - 1].Value;
                }
            }
            //Ustawienie rozmiaru czcionki dla arkusza Excel.
            int RowsCount = dataGridView1.Rows.Count+1;
            string RowsCountString = "R";
            RowsCountString = RowsCountString + RowsCount.ToString();
            ws.get_Range("A1", RowsCountString).Cells.Font.Size = 8;
            //Ustawienie obramowania dla arkusza Excel.
            for (int j = 1; j <= RowsCount; j++)
            {
                for (int i = 1; i <= 18; i++)
                {
                    ws.Cells[j, i].Borders.Color = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.Black);
                }
            }
            //Wypozycjonowanie zawartości komórek w arkuszu Excel.
            ws.get_Range("A1", "A2").Style.VerticalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            ws.get_Range("A1", "A2").Style.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignCenter;
            //Ustawienie szerokości kolumn już w arkuszu Excel.
            ws.Columns[1].ColumnWidth = 3;
            ws.Columns[2].ColumnWidth = 20;
            ws.Columns[3].ColumnWidth = 5;
            ws.Columns[4].ColumnWidth = 7;
            ws.Columns[5].ColumnWidth = 6;
            ws.Columns[6].ColumnWidth = 8;
            ws.Columns[7].ColumnWidth = 4.5;
            ws.Columns[8].ColumnWidth = 4.5;
            ws.Columns[9].ColumnWidth = 4;
            ws.Columns[10].ColumnWidth = 4.5;
            ws.Columns[11].ColumnWidth = 4;
            ws.Columns[12].ColumnWidth = 6;
            ws.Columns[13].ColumnWidth = 6;
            ws.Columns[14].ColumnWidth = 8;
            ws.Columns[15].ColumnWidth = 5;
            ws.Columns[16].ColumnWidth = 5;
            ws.Columns[17].ColumnWidth = 7;
            ws.Columns[18].ColumnWidth = 6;

            xlApp.Visible = true;
        }
 

Calutki kod którym generuje plik a potem eksportuje i ustawiam tak jak potrzebuje .

1

Możesz dodać ustawienia wydruku:

ws.PageSetup.PrintTitleRows = "$1:$2";

podając zakres wierszy, dla $1:$2 będzie to pierwszy i drugi wiersz.

0
DibbyDum napisał(a):

Możesz dodać ustawienia wydruku:

ws.PageSetup.PrintTitleRows = "$1:$2";

podając zakres wierszy, dla $1:$2 będzie to pierwszy i drugi wiersz.

Momencik w "x" wpisuję treść tytułu tak ? a gdzie zakres wierszy ?

0

Zakres wierszy podajesz, gdzie znajduje się tytuł

0

Zgłupiałem... piszę:

//Create an Excel App
            Microsoft.Office.Interop.Excel.Application xlApp = new Microsoft.Office.Interop.Excel.Application();

            Workbook wb = xlApp.Workbooks.Add(XlSheetType.xlWorksheet);
            Worksheet ws = (Worksheet)xlApp.ActiveSheet;

            ws.PageSetup.PrintTitleRows = "$1:$2";

            xlApp.Visible = true;
 

Ale w wygenerowanym arkuszu nic nie ma, w ustawieniach strony mam to $1:$2 ale gdzie mam ustawić treść tego tytułu?

1

Tytułęm są wartości zapisane w pierwszym i drugim wierszu więc w Twoim przypadku na podglądzie wydruku na każdej stronie pojawi się: ws.Cells[1, 1] = "L.p";
"Dłużnik", "Saldo początkowe", "Przypisy", "Odpisy", ..., "Liczba\ndni/go", "Suma" itp. W edycji dokumentu nie będziesz widział kilka razy tytułu dopiero w podglądzie widoku.

To może bardziej obrazowo na przykładzie w Excelu:

Ustawienia:
podglad.png

Podgląd wydruku:
wydruk.png

EDIT odnośnie pytania z PW:

Żeby dodać jak widać powyżej "Strona 1"... "Strona 2" (zwykły nagłówek) należy dodać:

ws.PageSetup.CenterHeader = "Strona &P";
// anlogicznie po prawej: ws.PageSetup.RightHeader = "..."
// po lewej: ws.PageSetup.LeftHeader = "..."

Więcej znaczników masz tutaj: https://msdn.microsoft.com/en-us/library/bb225426(v=office.12).aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1