Hallo zusammen,
komme nicht wirklich weiter möchte gerne in einer Excel Tabelle Werte suchen, doch von den momentanen 11300 Einträgen sind die letzten 300 relevant und das nur von Spalte(G).
Mein Ansatz sieht folgendermaßen aus:
private string inExcelSearch(string searchString)
{
string searchStrg = searchString;
Excel.Application xlApp = new Excel.Application();//create a new Excel application
Excel.Workbook xlWorkBook = xlApp.Workbooks.Open(@"C:\Users\Olaf\Desktop\WARENAUSGANG.2.xls");//open the workbook
Excel.Worksheet xlWorkSheet = xlWorkBook.Worksheets["Tabelle1"];//get the worksheet object
Excel.Range colRange = xlWorkSheet.Range[xlWorkSheet.Cells[7,(xlWorkSheet.UsedRange.Rows.Count-300)],(xlWorkSheet.Cells[7,(xlWorkSheet.UsedRange.Rows.Count)])]; ;//<---- hier liegt mein Problem
Excel.Range resultRange = colRange.Find(
What: searchStrg,
LookIn: Excel.XlFindLookIn.xlValues,
LookAt: Excel.XlLookAt.xlPart,
SearchOrder: Excel.XlSearchOrder.xlByRows,
SearchDirection: Excel.XlSearchDirection.xlNext
);// search searchString in the range, if find result, return a range
if (resultRange is null)
{
MessageBox.Show("Did not found " + searchStrg + " in column A");
return "false";
}
else
{
MessageBox.Show("gefunden");
//then you could handle how to display the row to the label according to resultRange
return "true";
}
xlWorkBook.Close(false, Type.Missing, Type.Missing);
xlApp.Application.Quit();
}
bekomme aber den Bereich nicht definiert 😦
mit
Excel.Range colRange = xlWorkSheet.Columns("G:G");
klappt es schon, doch nur viel zu langsam, deshalb wollte ich es eingrenzen, bekomme es aber nicht hin.
Könnt ihr mir bitte helfen!?
DANKE!!!!
Mal OpenXML angeschaut, das für solche Zwecke gemacht ist und seit ca. 10 Jahren von Microsoft empfohlen wird? Interop war halt nie ein Performancemeister.
XLS wird zwar nicht direkt unterstützt; kann ja aber problemlos mit Tools, die Microsoft seit 2007 anbietet, in XLSX transformiert werden.
Ansonsten mal NetOffice anschauen, ob das evtl. Deine Anforderung abdeckt?
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hi,
Danke für die Antwort, doch leider kann ich nur diese Excel Tabelle verwenden. Dazu möchte ich den geringsten Weg nutzen und dachte mir es wäre so einer. Bei ca 300 Daten müsste es von der Zeit auch gehen. Zumindest würde ich es gerne ausprobieren wollen.
Danke
Naja; dann musst mit Pech eben mit der Performance leben, wenn Du nichts verändern willst 😉
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Hallo aloneboy,
Du bist dem Ziel auch nicht so weit entfernt.
Wie Abt schreibt ist OpenXML ist die schönste Lösung aber nicht die einfachste...
Gruss Lhyn
Hi,
das klingt vielversprechend 😃
Da ich mich damit nicht auskenne mit Excel und Interop,
könntest mir ein Beispiel geben, wäre sehr hilfreich!
Danke