ich die Bibliothek verwiesen haben Microsoft.Office.Interop.Excel
‚Keine Überlast für Verfahren ...‘ Fehler beim Verfahren über CodeDom mit interop.excel
und mit Hilfe der einfachen Stück Code folgen, kann ich eine Arbeitsmappe öffnen und das erste Arbeitsblatt :
Microsoft.Office.Interop.Excel.Application app = new Microsoft.Office.Interop.Excel.Application();
Workbook wb = app.Workbooks.Open(fileName, false);
Worksheet ws = (Worksheet)wb.Worksheets.get_Item(1);
ws.Select();
//do stuff with worksheet
wb.Close(false);
app.Quit();
Dies läuft wie erwartet ohne Fehler. Wenn ich jedoch den oben genannte Code dynamisch zu gestalten und kompilieren Sie das obige Snippet des CodeDom.Compiler verwendet, dann tritt ein Fehler auf der select-Methode:
„Keine Überladung für Methode‚Auswählen‘nimmt‚0‘Argumente“
ich kann dieses Problem umgehen, indem Sie eine geringfügige Änderung der Auswahl Anweisung machen als so:
ws.Select(Missing.Value)
Aber ich verstehe nicht ganz, warum ich das dies tun müssen, um?
Ich habe hinzugefügt, die bereits diese Verweise auf den dynamischen Code:
using System;
using System.Windows.Forms;
using System.Reflection;
using Microsoft.Office.Interop.Excel;
und haben den CodeDom Compiler wie so ein:
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.GenerateInMemory = true;
compilerParams.GenerateExecutable = false;
compilerParams.ReferencedAssemblies.Add("System.Windows.Forms.Dll");
compilerParams.ReferencedAssemblies.Add(@"J:\Visual Studio 2015\Projects\TestProgram\packages\Microsoft.Office.Interop.Excel.15.0.4795.1000\lib\net20\Microsoft.Office.Interop.Excel.dll");
aber gibt es etwas anderes/eine andere Einstellung, Ich vermisse dich bitte?
Was wählen Sie die "Select" -Anweisung zu tun? Übergeben von Null an die Auswahl funktioniert, aber Sie wissen, dass es das Blatt nicht auswählt, https://msdn.microsoft.com/en-us/vba/excel-vba/articles/worksheet-select-method-excel – BugFinder
CodeDom bekam nie ein viel Liebe. Ich vermute, dass der C# -CodeDom-Anbieter nie aktualisiert wurde, um C# 4 zu verstehen (einschließlich der benannten und optionalen Parameter) –
Vielen Dank für Ihre Antwort. Es löscht dann auch einige Zeilen, führt weitere Aufräumarbeiten durch und agiert dann als CSV erneut, bevor die Arbeitsmappe tatsächlich geschlossen wird. Im regulären (nicht dynamischen) Code funktioniert diese Zeile, ich kann die darüber liegende Blattauswahlzeile auf 1, 2 oder was auch immer ändern, und die "ws.Select;" line wird das Arbeitsblatt auswählen, für das ws festgelegt wurde. Im dynamischen Code funktioniert das jedoch nicht. –