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;