Excel Datensaäte aulesen?
-
Hallo zusammen,
Ich habe folgendes Problem.
Ich programmiere mit dem Visual Studio C++ 6 von Microsoft.
Ich möchte aus einer vorhandenen Excel-Datei eine bestimmte Spalte auslesen, um sie mit einer Spalte aus der anderen Exceldatei zu vergleichen und die übereinstimmenden Datensäte dann in eine txt-Datei schreiben...Ich habe bei Microsoft dieses hier gefunden http://support.microsoft.com/default.aspx?scid=kb;EN-US;179706
Damit kann ich in eine Excel-Datei was reinschreiben. Das ist ja schonmal schön und gut, aber ich möchte ja auslesen.
Hier werden Workbooks und Worksheets erstellt, wie kann ich denn jetzt vorhandene Workbooks öffnen und drauf zugreifen?
Danke schonmal...
PibeY2k
-
Moin,
wenn Du mit ODBC auf die Exceltabelle zugreifst, ist es ganz einfach. Mit dem Klassenassi Dein CRecordSet erstellen und fertig.
Der Trick ist, dass Du den Bereich in dem Du Daten lesen möchtest, mit einen Namen markieren mußt bevor Du den Klassenassi nimmst.Gruß, Tom
-
Ja das habe ich auch schon rausgefunden, aber das möchte ich ja gerade nicht.
Dann müsste ich ja jede Exceldatei noch Manuell ändern.
Geht das nicht auch irgendwie anders. Nicht mit ODBC?
-
Hallo,
einzelne Zellen abfragen funktioniert z.B. so:
COleVariant covTrue((short)TRUE), covFalse((short)FALSE), covOptional((long)DISP_E_PARAMNOTFOUND, VT_ERROR); _Application app; Workbooks books; _Workbook book; Worksheets sheets; _Worksheet sheet; Range range; VARIANT vCell; if(!app.CreateDispatch("Excel.Application")) { AfxMessageBox("Couldn't start Excel and get Application object."); return; } books = app.GetWorkbooks(); book = books.Open("D:\\Excel\\Mappe1.xls",covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional,covOptional); sheets =book.GetSheets(); sheet = sheets.GetItem(COleVariant((short)1)); range = sheet.GetRange(COleVariant("A1"),COleVariant("A1")); vCell=range.GetValue();
MfG
Marc
-
Ja danke, das hat funtkioniert
Jetzt jabe ich aber das nächste Problem...
Wenn ich jetzt die Datensätze auslese, muss ich die in eine COleVariant Variable reinschreiben, wenn ich es richtig verstanden habe..
Wie kann ich denn jetzt überprüfen, ob da überhaut was drin steht?
Ich möchte die ganze Spalte auslesen, solange noch was in einer Zelle drin steht, wenn die Zelle leer ist, soll die Schleife abbrechen.
Danke,
PibeY2k