Ich versuche C# zu erhalten, welche Arbeitsmappe der Benutzer ausgewählt hat, und alle Blätter zu finden, die Stock Daten enthalten würden. Konkret würde dies bedeuten, einen Bereich von Zellen zu betrachten (beispielsweise r < 6, c < 10) für "Schließen", "Schließen" oder "SCHLIESSEN".Durchsuchen einer Sammlung von Excel-Blättern w/C#
Der folgende Code zeigt den Punkt, an dem der Benutzer eine .xls-Datei ausgewählt hat.
Ich bin nicht sicher, wie Sie die Blätter in der Arbeitsmappe durchlaufen, um nach dem gewünschten Text zu suchen.
Ich nehme an, es beinhaltet eine Sammlung von Blättern zu schaffen und es den in der aktuellen Arbeitsmappe zuordnen, aber meine Versuche bisher nicht funktionierte.
private void button1_Click(object sender, System.EventArgs e)
{
try
{
OpenFileDialog dlg = new OpenFileDialog();
dlg.Filter = "Excel Files (*.xls)|*.XLS";
if (dlg.ShowDialog() == DialogResult.OK)
{
// MessageBox.Show(dlg.FileName, "My Application", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk);
Excel.Application xlApp = new Excel.ApplicationClass();
xlApp.Visible = true;
Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(dlg.FileName,
0, false, 5, "", "", false, Excel.XlPlatform.xlWindows, "",
true, false, 0, true, false, false);
}
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);
MessageBox.Show(errorMessage, "Error");
}
}
Danke für jede Idee.
Jeff
All diese "Missing.Value" s sind, warum Menschen VB.NET für Office Interop bevorzugen, und warum C# 4 das dynamische Keyword hat. –
Ja, es ist wahr, dass Sie aufräumen müssen; Ich habe das in meiner schlampigen Antwort unten nicht erwähnt. Mein Verständnis ist, dass Marshal.FinalReleaseComObject (Objekt) für jede Variable aufgerufen werden sollte, die einem COM-Objekt zugewiesen ist. Ich denke, das bedeutet auch, dass Sie keine foreach-Schleife verwenden können, wie hier gezeigt. – Jay
Crikey. Und das "application.Workbooks.Open()" verursacht Fehler. Just looked lesen durch http://stackoverflow.com/questions/158706/how-to-properly-clean-up-excel-interop-objects-in-c/159419 –