Autor Beitrag
GK
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Mi 15.03.06 14:51 
Hi,

ich möchte eine Excel Datei erstellen mit C#. In Visual Basic hatte man damals und Heutzutage die möglichkeit es über CreateObject zumachen ein gegenstück für C# dafür konnte ich nicht finden, deshalb habe ich das jetzt durch die COM schnittstelle Interop.Excel.dll gemacht.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Excel.Application app = new Excel.Application();
Workbooks wb = app.Workbooks;
app.Visible = false;
Workbook _wb = wb.Add(XlWBATemplate.xlWBATWorksheet);
Sheets sheets = _wb.Worksheets;
Worksheet _ws = (Worksheet)sheets.get_Item(i);
Range r1 = _ws.Rows;
Range r2 = (Range)r1.Cells.get_Item(11);
r2.Value2 = "test";


Das Funktioniert auch soweit wie es soll. Das ganze möchte ich über Reflections lösen. Dazu habe ich das jetzt so gemacht:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
Assembly externeAssembly = Assembly.LoadFrom("Interop.Excel.dll");
Type excelApplicationType = externeAssembly.GetType("Excel.ApplicationClass");
object excelApplication = Activator.CreateInstance(excelApplicationType);
            
excelApplicationType.InvokeMember("Visible", BindingFlags.SetProperty, null, excelApplication, new object[] { false });
object excelWorkbooks = excelApplicationType.InvokeMember("Workbooks", BindingFlags.GetProperty, null, excelApplication, null);
Type excelWorkbooksType = externeAssembly.GetType("Excel.Workbooks");
object excelWorkbook = excelWorkbooksType.InvokeMember("Add", BindingFlags.InvokeMethod, null, excelWorkbooks, new object[] { XlWBATemplate.xlWBATWorksheet });
Type excelWorkbookType = externeAssembly.GetType("Excel.Workbook");

object excelSheets = excelWorkbookType.InvokeMember("Worksheets", BindingFlags.GetProperty, null, excelWorkbook, null);
Type excelSheetsType = externeAssembly.GetType("Excel.Sheets");

object excelWorkSheet = excelSheetsType.InvokeMember("get_Item", BindingFlags.InvokeMethod, null, excelSheets, new object[] { 1 });
);

Beim erstellen von dem excelWorkSheet object durch die funktion get_Item bekomme ich eine Exception "Unbekanter Name". Ich habe versucht auf andere Funktionen dieses Objectes zuzugreifen weil leider den gleichen Fehler Hervorbringt. Wenn ich auf die Properties dieses objectes zugreifen will geht das wunderbar.

Hat vielleicht jemand eine idee wieso ich er in die Exception reinläuft, oder mir ein andern ansatz sagen kann wo ich die COM schnitstelle nicht Referenzieren muss?

schon mal im vorraus ein danke