Laden...

Excel Range als Tabelle formatieren und erste Zeile als Überschriften nehmen

Erstellt von Fab4guy vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.686 Views
F
Fab4guy Themenstarter:in
54 Beiträge seit 2016
vor 7 Jahren
Excel Range als Tabelle formatieren und erste Zeile als Überschriften nehmen

Was ich aktuelle tue:
Ich bekommen Daten aus einer SQL-Datenbank die in eine DataTable Objekt geschrieben werden.

Diese Daten werden dann in eine Excel-Tabelle geschrieben.
Auf die Daten-Range wird dann ein TabellenStyle angewendet.

Funktioniert auch alles soweit.
Was ich bis jetzt nicht hin bekommen habe, ist das der Autofilter von der Tabelle meine Überschriften verwendet als Tabellenüberschriften.

Aktuell wird immer Spalte1, Spalte2, Spalte2 usw. angezeigt.

Jemand eine Idee??


                Microsoft.Office.Interop.Excel.Application excel = new Microsoft.Office.Interop.Excel.Application();
                excel.Workbooks.Add();
                Microsoft.Office.Interop.Excel.Worksheet workSheet = excel.ActiveSheet;

                int rowIndex = 0;
                int columnIndex = 0;
                foreach (DataColumn colum in this.currentExportTable.Columns)
                {
                    workSheet.Cells[rowIndex + 1, columnIndex + 1] = colum.ColumnName;
                    columnIndex++;
                }
                rowIndex++;

                foreach (DataRow row in this.currentExportTable.Rows)
                {
                    for (columnIndex = 0; columnIndex < row.ItemArray.Length; columnIndex++)
                    {
                        workSheet.Cells[rowIndex + 1, columnIndex + 1] = row.ItemArray[columnIndex];
                        workSheet.Columns[columnIndex + 1].Autofit();
                    }
                    rowIndex++;
                }
                workSheet.Name = this.currentUser.getUserFirstname() + " " + this.currentUser.getUserLastname();

                Microsoft.Office.Interop.Excel.Range last = workSheet.Cells.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeLastCell, Type.Missing);
                Microsoft.Office.Interop.Excel.Range range = workSheet.get_Range("A1", last);

                workSheet.ListObjects.AddEx(Microsoft.Office.Interop.Excel.XlListObjectSourceType.xlSrcRange, range, Type.Missing, Microsoft.Office.Interop.Excel.XlYesNoGuess.xlNo, Type.Missing).Name = workSheet.Name;
                workSheet.ListObjects.get_Item(workSheet.Name).TableStyle = "TableStyleMedium2";
                workSheet.ListObjects.get_Item(workSheet.Name).ShowHeaders = false;
                excel.Application.Visible = true;

H
523 Beiträge seit 2008
vor 7 Jahren

Der vierte Parameter der Methode workSheet.ListObjects.AddEx (= HasHeaders ) sollte xlYes sein.

Siehe auch MSDN