Programmgesteuertes laden von CSV-Datei in Excel-Arbeitsblatt (Delphi 7)
Ich habe eine große Menge von Daten, zum einfügen in ein Arbeitsblatt einer vorhandenen Excel-Arbeitsmappe. Die Excel-Arbeitsmappe haben, die anderen Tabellenblätter mit Berechnungen und pivot-Tabellen. Die Daten können so viele wie bei 60.000 Zeilen und mehr als 30 Spalten. Diese Lösung muss funktionieren sowohl für Excel 2003 und Excel 2007.
Mithilfe der Excel-OLE-Objekt ist viel zu langsam, so dass wir versuchen, das laden der Daten aus einer CSV-Datei. Wir haben eine Methode zum laden der Daten, indem die Daten in die Zwischenablage und dann einfügen in das Arbeitsblatt ein. Ich glaube, das ist ein ganz ein Schlamassel. Gibt es eine andere Möglichkeit, programmgesteuert laden Sie eine CSV-Datei in ein Arbeitsblatt? Oder vielleicht eine andere Lösung insgesamt?
Update: Wir haben zugeschlagen, mit einer anderen Aufgabe, vor der wir voll untersuchen die Antworten. Wir sollten in der Lage sein, zurück zu kommen, in ein paar Wochen. Ich werde sicher wieder ein update, wenn wir wieder zu dieser Aufgabe.
Danke für alle Antworten bisher!
Du musst angemeldet sein, um einen Kommentar abzugeben.
XLSReadWrite ist eine Komponente, die Lesen und schreiben von excel-Dateien von Delphi. Es ist schnell und es hat die Unterstützung für Excel 2003 und 2007. Sie können erstellen neue excel-Dateien sowie das öffnen vorhandener und hinzufügen/ändern können.
Außerdem müssen Sie nicht über Excel installiert haben, um es benutzen zu können.
Sehen http://www.axolot.com/components/xlsrwii20.htm
Jede chance, die Sie fallen können die Voraussetzung für das arbeiten mit Office 2003? Ich würde empfohlen haben die Open XML Format SDK. Er läßt Sie binden Assemblys von verwaltetem code zu spreadsheet-Dokumenten, behandeln von Ereignissen wie Öffnen oder zu Schließen, und Lesen und schreiben von Zellen in das Dokument, unter anderem. Alternativ können Sie es verwenden, um zu manipulieren XSLX Dokumente aus einer Anwendung. Ziemlich glatt, eigentlich.
Da diese nicht für Sie arbeiten, wie über das schreiben eines Makros, das zieht in der CSV-Datei, wenn das Arbeitsblatt geladen ist?
laden Sie die csv in listview oder ein OLE DB-provider zu laden, auf DBGrid, dann export in xls-Datei-format mit TMxExport Komponente von Max Komponenten:
Max-Komponenten
Haben Sie versucht, das verknüpfen der csv-Datei direkt in das Arbeitsblatt ein.
Daten -> Externe Daten Importieren -> Importieren von Daten
ändern Sie den Dateityp 'Text-Dateien'
Können Sie dann aktualisieren Sie das Arbeitsblatt, wenn Sie die csv-update.
HINWEIS: ich habe dies nicht getan mit der Menge der Daten, die Sie angegeben haben, so YMMV
Tatsächlich gibt es eine Weise, die ziemlich schnell, ziemlich alt tech (heutzutage), ist aber wahrscheinlich der Schnellste.
Es ist ADO oder für frühere Versionen von DAO (Hinweis: nicht ADO.NET)
Lesen Sie eine CSV-Datei, die mithilfe von ADO und der JET-Engine, um die Daten in ein ADO-recordset, dann ein Excel-Range-Objekt hat eine Methode CopyFromRecordSet wird, kopieren Sie (sehr schnell) von der ADO (oder DAO) - recordset.
http://msdn.microsoft.com/en-us/library/aa165427(Büro.10).aspx
Können Sie versuchen, eine durch Tabulatoren Getrennte Werte, anstelle von CSV -, als Sie einfach fügen Sie diese in Excel 🙂