Es ist nicht C++, aber der COM-Schnittstelle sollte die gleiche sein, egal, welche Sprache Sie verwenden, richtig?
Würden Sie nicht brauchen, port alles. Nur __init__, set_range, get_value, set_value, save (oder save_as), close, und quit. Sie müssen möglicherweise auch, um Müll entsorgen (wie python hat eine automatische gc).
Oder Sie könnten einfach ein port (und zu verändern) den folgenden code (die habe ich noch nicht getestet, da ich kein excel mehr - sollten Sie vielleicht überprüfen Sie es durch das herunterladen von python und pythonwin):
from win32com.client importDispatch
app =Dispatch("Excel.Application")
app.Visible=True# spooky - watch the app run on your desktop!
app.Workbooks.Open("C:\\book.xls")
range = app.ActiveWorkbook.Sheets(1).Range("a1")
print 'The range was:'
print range.Value
range.Value=42
print 'The value is now 42'
app.ActiveWorkbook.Save()
app.ActiveWorkbook.SaveAs("C:\\excel2.xls")
app.ActiveWorkbook.Close()
app.Quit()# any gc to do?
Excel 2007-Dateien sind einfach zip-Dateien. Versuchen Sie zu benennen .xlsx zu .zip: Sie können extrahieren von Dateien und Ordnern. Mit einem text-editor können Sie anzeigen, dass Sie alle XML-Dateien.
Also die Lösung:
verwenden eine gemeinsame Klasse zu entpacken Sie Ihre xlsx -
mit einem xml-parser, greifen Sie Daten
wenn Sie geändert haben somethig, re-zip alle
Kein COM-Objekt erforderlich.
Je nach c++ - compiler, können Sie leicht finden Sie die gewünschten Quellen.
Es gibt drei wichtigsten Dinge, die Sie tun müssen.
1) stellen Sie Sicher Voraussetzung Dateien installiert sind und lokalisierbar.
Offensichtlichen, ich weiß, aber stellen Sie sicher, dass eine geeignete version von Excel installiert, so dass Sie können wählen Sie die gewünschte Microsoft-Bibliotheken (und Ihre Standorte).
nämlich MSO.DLL, VBE6EXT.OLB und EXCEL.EXE
2) richten Sie die Microsoft Bibliotheken.
In Ihrem C++ - code, sagen wir, Sie beginnen mit einer einfachen Konsole-Anwendung, sicher sein, um die import-Bibliotheken in C++ - Anwendungen, die Schnittstellen mit Excel. In meinem Beispiel verwende ich:
Einer low-tech-Weg, die ich verwendet habe ein paar Projekte zu machen, ist eine einfache Skript - /makro - /was auch immer, läuft ein externes Programm. Schreiben Sie das externe Programm in C++. Holen Sie sich das externe Programm zum Lesen der Eingabe aus und schreibt die Ausgabe in eine .csv-Datei (einfache Komma-getrennte text-Datei). Excel kann problemlos Lesen und schreiben .csv-Dateien, so dass dieses setup gibt Ihnen alles, was Sie brauchen, um das Handwerk eine praktikable Lösung.
Dies kann alles getan werden, über die IDispatch-Schnittstelle. Es kann sehr blutig komplizierte schnell (Cheers Microsoft), aber mindestens einmal haben Sie Ihren Kopf Runde Excel finden Sie die Integration mit anderen MS-Anwendung einfach zu 🙂
Glücklicherweise gibt es jemand über codeguru wer hat das Verfahren einfach und schön. Nachdem ich gelesen hatte, durch diesen code, den ich begann, meinen Kopf Runde, was excel zu tun war, außerdem fand ich wurde es WIRKLICH einfach, um es zu erweitern, andere Dinge zu tun, die ich wollte. Denken Sie daran, dass Sie das senden von Befehlen in Excel über die IDispatch-Schnittstelle. Das bedeutet, Sie müssen darüber nachdenken, wie SIE sowas machen würde, um herauszufinden, wie es programmatisch.
Edit: der code-guru Beispiel ist für Excel 2003, aber es sollte ziemlich einfach sein, Sie zu verlängern bis 2007 🙂
Beginnen hier mit dem OpenXml Sdk. Das SDK herunterladen von hier. Das SDK verwendet .NET, so müssen Sie möglicherweise die Verwendung von C++.NET
Ich bin skeptisch gegenüber der Verwendung .NET nur für diesen Zweck, da meine app nicht verwenden .Net so wie jetzt -1, funktioniert nicht, die Frage ist tagged VC6.
Benutzt habe ich eine 3rd-Party-Komponente für diesen in der Vergangenheit: OLE XlsFile von SM-Software (nicht kostenlos, aber preiswert). Der Vorteil dieser Komponente über die Microsoft COM-Komponenten ist, dass Sie können es verwenden, um zu schreiben XLS-Dateien, auch wenn Excel nicht installiert ist.
Es erlaubt Ihnen auch, zu erstellen speadsheets oder Arbeitsmappen mit eingebetteten Formeln und der Formatierung etwas nicht möglich, wenn man CSV-Dateien als Austauschformat.
Wenn Sie die beste Leistung, zu schreiben binäre Excel-Dateien ist der Weg zu gehen und Sie zu schreiben ist nicht so schwierig, wie Sie zu Lesen. Die Binär-Datei-format ist relativ gut dokumentiert durch die OpenOffice.org Projekt:
Diese Lösung funktioniert am besten, wenn Sie schreiben, viele Excel-Dateien, meist mit Daten und wenig Formatierung, und wenn Sie nicht wollen, öffnen Sie die Dateien zur gleichen Zeit. Wenn Sie schreiben, eine Excel-Datei zu öffnen, danach können Sie wahrscheinlich verwenden Sie die propsed C++ - COM-Schnittstelle wie die anderen Poster haben erklärt.
Verwendung der COM-Schnittstelle wird notwendig, teuer out-of-process-Aufrufe, es sei denn, Sie schreiben eine Excel-COM-Add-in. Wenn du schreibst ein Add-in importieren Sie Ihre Daten in der aktuellen Excel-Blatt, füllen Sie das Blatt wird immer noch viel langsamer als dumping eine Datei, aber für eine einzelne Datei zu einem Zeitpunkt, dies kann akzeptabel sein, je nach user-Szenario. Wenn Sie sich entschließen, verwenden Sie die COM-Schnittstelle, minimieren die Anzahl der Aufrufe von Excel. Verwenden Sie die Methoden, die es ermöglichen, legen Sie ein array von Werten, wenn Sie existieren, festlegen von Stil-Eigenschaften, die durch Zeile und Spalte möglich ist und nicht pro Zelle.
Excel bietet eine COM-Schnittstelle, die Sie verwenden können, aus Ihrem C++ - Anwendung.
Erfahrung habe ich nur Excel 2003, aber ich denke für excel 2007 funktioniert es auch.
Diese kann getan werden, z.B. mit #import-oder wie in diesem Artikel beschrieben:
http://support.microsoft.com/kb/216686
InformationsquelleAutor Oleg
Gibt es eine python-Lösung (Verwendung von COM-Versand) hier: http://snippets.dzone.com/posts/show/2036
Es ist nicht C++, aber der COM-Schnittstelle sollte die gleiche sein, egal, welche Sprache Sie verwenden, richtig?
Würden Sie nicht brauchen, port alles. Nur
__init__
,set_range
,get_value
,set_value
,save
(odersave_as
),close
, undquit
. Sie müssen möglicherweise auch, um Müll entsorgen (wie python hat eine automatische gc).Oder Sie könnten einfach ein port (und zu verändern) den folgenden code (die habe ich noch nicht getestet, da ich kein excel mehr - sollten Sie vielleicht überprüfen Sie es durch das herunterladen von python und pythonwin):
InformationsquelleAutor wisty
Excel 2007-Dateien sind einfach zip-Dateien. Versuchen Sie zu benennen .xlsx zu .zip: Sie können extrahieren von Dateien und Ordnern. Mit einem text-editor können Sie anzeigen, dass Sie alle XML-Dateien.
Also die Lösung:
Kein COM-Objekt erforderlich.
Je nach c++ - compiler, können Sie leicht finden Sie die gewünschten Quellen.
InformationsquelleAutor Redax
Es gibt drei wichtigsten Dinge, die Sie tun müssen.
1) stellen Sie Sicher Voraussetzung Dateien installiert sind und lokalisierbar.
Offensichtlichen, ich weiß, aber stellen Sie sicher, dass eine geeignete version von Excel installiert, so dass Sie können wählen Sie die gewünschte Microsoft-Bibliotheken (und Ihre Standorte).
nämlich MSO.DLL, VBE6EXT.OLB und EXCEL.EXE
2) richten Sie die Microsoft Bibliotheken.
In Ihrem C++ - code, sagen wir, Sie beginnen mit einer einfachen Konsole-Anwendung, sicher sein, um die import-Bibliotheken in C++ - Anwendungen, die Schnittstellen mit Excel. In meinem Beispiel verwende ich:
3) Verwenden Sie die Excel-Objekt-Modell im C++ - code
Zum Beispiel zu erklären, eine Excel-Application-Objekt Zeiger für das Lesen /schreiben einer Excel-Arbeitsmappe:
Und für den Zugriff auf und Bearbeiten Sie die Excel-Arbeitsblatt, und die Zellen innerhalb Sie:
Und so weiter. Ich habe eine tiefergehende Diskussion an dieser folgenden blog-posting.
InformationsquelleAutor AndyUK
Einer low-tech-Weg, die ich verwendet habe ein paar Projekte zu machen, ist eine einfache Skript - /makro - /was auch immer, läuft ein externes Programm. Schreiben Sie das externe Programm in C++. Holen Sie sich das externe Programm zum Lesen der Eingabe aus und schreibt die Ausgabe in eine .csv-Datei (einfache Komma-getrennte text-Datei). Excel kann problemlos Lesen und schreiben .csv-Dateien, so dass dieses setup gibt Ihnen alles, was Sie brauchen, um das Handwerk eine praktikable Lösung.
InformationsquelleAutor Bill Forster
Dies kann alles getan werden, über die IDispatch-Schnittstelle. Es kann sehr blutig komplizierte schnell (Cheers Microsoft), aber mindestens einmal haben Sie Ihren Kopf Runde Excel finden Sie die Integration mit anderen MS-Anwendung einfach zu 🙂
Glücklicherweise gibt es jemand über codeguru wer hat das Verfahren einfach und schön. Nachdem ich gelesen hatte, durch diesen code, den ich begann, meinen Kopf Runde, was excel zu tun war, außerdem fand ich wurde es WIRKLICH einfach, um es zu erweitern, andere Dinge zu tun, die ich wollte. Denken Sie daran, dass Sie das senden von Befehlen in Excel über die IDispatch-Schnittstelle. Das bedeutet, Sie müssen darüber nachdenken, wie SIE sowas machen würde, um herauszufinden, wie es programmatisch.
Edit: der code-guru Beispiel ist für Excel 2003, aber es sollte ziemlich einfach sein, Sie zu verlängern bis 2007 🙂
InformationsquelleAutor Goz
Beginnen hier mit dem OpenXml Sdk. Das SDK herunterladen von hier. Das SDK verwendet .NET, so müssen Sie möglicherweise die Verwendung von C++.NET
-1, funktioniert nicht, die Frage ist tagged VC6.
InformationsquelleAutor Andrew Keith
Es wurde eine sehr lange Zeit, aber ich habe den Jet OLEDB, um auf Excel-Dateien. Sie beginnen die Suche in diese Richtung.
InformationsquelleAutor Jeff
Benutzt habe ich eine 3rd-Party-Komponente für diesen in der Vergangenheit: OLE XlsFile von SM-Software (nicht kostenlos, aber preiswert). Der Vorteil dieser Komponente über die Microsoft COM-Komponenten ist, dass Sie können es verwenden, um zu schreiben XLS-Dateien, auch wenn Excel nicht installiert ist.
Es erlaubt Ihnen auch, zu erstellen speadsheets oder Arbeitsmappen mit eingebetteten Formeln und der Formatierung etwas nicht möglich, wenn man CSV-Dateien als Austauschformat.
InformationsquelleAutor Bruce Ikin
Wenn Sie die beste Leistung, zu schreiben binäre Excel-Dateien ist der Weg zu gehen und Sie zu schreiben ist nicht so schwierig, wie Sie zu Lesen. Die Binär-Datei-format ist relativ gut dokumentiert durch die OpenOffice.org Projekt:
http://sc.openoffice.org/excelfileformat.pdf
und Microsoft hat auch veröffentlicht in der Dokumentation:
http://download.microsoft.com/download/0/B/E/0BE8BDD7-E5E8-422A-ABFD-4342ED7AD886/Excel97-2007BinaryFileFormat(xls)Specification.xps
Diese Lösung funktioniert am besten, wenn Sie schreiben, viele Excel-Dateien, meist mit Daten und wenig Formatierung, und wenn Sie nicht wollen, öffnen Sie die Dateien zur gleichen Zeit. Wenn Sie schreiben, eine Excel-Datei zu öffnen, danach können Sie wahrscheinlich verwenden Sie die propsed C++ - COM-Schnittstelle wie die anderen Poster haben erklärt.
Verwendung der COM-Schnittstelle wird notwendig, teuer out-of-process-Aufrufe, es sei denn, Sie schreiben eine Excel-COM-Add-in. Wenn du schreibst ein Add-in importieren Sie Ihre Daten in der aktuellen Excel-Blatt, füllen Sie das Blatt wird immer noch viel langsamer als dumping eine Datei, aber für eine einzelne Datei zu einem Zeitpunkt, dies kann akzeptabel sein, je nach user-Szenario. Wenn Sie sich entschließen, verwenden Sie die COM-Schnittstelle, minimieren die Anzahl der Aufrufe von Excel. Verwenden Sie die Methoden, die es ermöglichen, legen Sie ein array von Werten, wenn Sie existieren, festlegen von Stil-Eigenschaften, die durch Zeile und Spalte möglich ist und nicht pro Zelle.
InformationsquelleAutor Sebastian
Können Sie ODBC verwenden, um Lesen und schreiben von Daten aus einer excel-Datei einfach und ohne Excel. Der link:Hier
Den link für, wie Sie schreiben Daten mit odbc: Hier
InformationsquelleAutor jle
Habe ich einen Satz von C++ - Klassen, die von CodeProject, bevor Sie zu schreiben XLS-Dateien.
Es ist wirklich einfach zu bedienen und kostenlos! Sie finden es hier.
Nahm mir keine Zeit zum einrichten.
InformationsquelleAutor Charles