Lange Zeit Leser, zum ersten Mal Poster.C#, Visual Studio, Öffnen Excel & dann setzen Daten in Kombinationsfeld
Ich hatte ein Problem für die letzten paar Stunden versucht, die Blattnamen aus einer Excel-Arbeitsmappe zu ziehen und zur Auswahl in einer Combobox anzuzeigen. Ich schaffte es, es zur Arbeit zu bringen, aber ich bin ein wenig besorgt sein Rohöl und nicht sehr effizient.
private void btnChoose2_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openfileDialog1 = new OpenFileDialog();
if (openfileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
openLabel.Text = openfileDialog1.SafeFileName;
String filename = DialogResult.ToString();
var excelApp = new Microsoft.Office.Interop.Excel.Application();
excelApp.Visible = false;
excelApp.Workbooks.Open(openfileDialog1.FileName);
int rcountTag = excelApp.Sheets.Count - 1;
for (int i = 1; i <= rcountTag + 1; i++)
{
Microsoft.Office.Interop.Excel.Sheets excelSheets = excelApp.Worksheets;
Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)
excelSheets.get_Item(i);
comboBoxMapping.Items.Insert(i - 1, worksheet.Name);
}
}
}
Jeder Rat würde sehr geschätzt werden.
Sie haben ein wenig Arbeit zu tun um diesen Code robust zu machen. Sie müssen 'excelApp.Quit()' aufrufen, bevor Sie mit Excel fertig sind. Sie müssen auch 'System.Runtime.InteropServices.Marshal.ReleaseComObject (instance) 'auf ** jeder COM-Instanz ** aufrufen, bevor sie den Gültigkeitsbereich verlassen. In Ihrem obigen Code, der auch die Referenz "excelApp.Workbooks" in "excelApp.Workbooks.Open (...)" enthält, müssten Sie einen Verweis auf "excelApp.Workbooks" erhalten, bevor Sie den Verweis aufrufen und dann freigeben vor dem Beenden. Sie müssen sehr vorsichtig mit jeder einzelnen Referenz sein. – Enigmativity
Danke Enigmatismus, das werde ich mir merken. –