www.mikrocontroller.net

Forum: PC-Programmierung Excel Tabelle mit visual Studio C++ auslesen


Autor: Ali K. (lernen)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
ich hätte gern eine Frage, ich würde  gern die Daten die in der 
beigefügte Datei in c++ auslesen und weiter damit arbeiten.
Kann mir jemand dabei helfen.

Danke

Autor: Manne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenns morgen noch reicht kann ich dir Beispielcode von mir rauskopieren.

Autor: hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Am einfachsten ist es die Datei von Excel als CSV-Datei
speichern zu lassen.
Dann ist es eine einfache Textdatei und kann sehr einfach
eingelesen werden.
Der direkte zugriff auf Excel ist nämlich meist recht
schwierig (MS eben;)).

http://de.wikipedia.org/wiki/CSV-Datei

gruß hans

Autor: Manne (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nein, ist nicht schwierig, 50 Zeilen Code.

Autor: Ali K. (lernen)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Manne wrote:
> Wenns morgen noch reicht kann ich dir Beispielcode von mir rauskopieren.

danke, wegen der Zeit ist kein thema, es wäre ganz nett von dir.

Autor: Manne (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Im Anhang findest du ein kleines Visual Studio 6 Projekt, das zeigt, wie 
man mit C++ auf ein Excel-Sheet zugreifen kann. Bitte erst in den Code 
reinschauen und die dort angegebene Excel Datei anlegen.
Prinzipiell kannst auf diese Art alles machen, was du auch von Hand in 
Excel machen kannst. Über die Methoden, die an den Objekten alle 
dranhängen kannst du dich bei MSDN oder Google informieren.

Autor: Stefan K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

hab gerade versucht das beispielprogramm ans laufen zu bekommen.
Habe dafür Visual Studie 2010 C++ genutzt und es hat leider nicht 
funktioniert. Es werden mir beim kompilieren jede menge fehler in der 
datei excel.h, die mit im Zipfile enthalten ist angezeigt.

Kann das an der von mir genutzen Version von Visual Liegen oder müsste 
ich was anderes falsch gemacht haben ?

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan K. schrieb:
> Es werden mir beim kompilieren jede menge fehler in der
> datei excel.h, die mit im Zipfile enthalten ist angezeigt.

Du könntest Dir ja diese Fehlermeldungen ansehen, beginnend mit der 
ersten.

Die werden ja nicht ausgegeben, um Leute zu frustrieren, sondern sagen 
i.d.R. recht eindeutig, was ihnen nicht passt.

Eine Datei namens excel.h ist im Beispiel übrigens nicht enthalten, da 
gibt es nur eine excel8.h - meinst Du die?

Autor: Stefan K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ups ja genau die meinte ich,

das Ding ist nur, das bei 60 bis 70 Fehlermeldungen meistens nur 1 Punkt 
falsch ist und ich nicht der C++ überflieger bin, das zu erkennen.

Meistens steht der Fehler ja in der ersten Fehlermeldung.

Fehlermeldung:

1>C:\Programme\Microsoft 
SDKs\Windows\v7.0A\include\Excel_test\excel8.h(8): error C2504: 
'COleDispatchDriver': Basisklasse undefiniert

Springe ich nun an die stelle mit Visual, an der der Fehler sein soll, 
bzw Visual den Fehler ausgibt, habe ich den orginal code aus der zip 
datei.


In der datei wird ja nun als erstes die Klasse  wird ja nun eine 
Klassedefiniert:

class _Application : public COleDispatchDriver
{
public:
  _Application()
  {
  }    // Calls COleDispatchDriver default constructor
  _Application(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch)
  {
  }
  _Application(const _Application& dispatchSrc) : 
COleDispatchDriver(dispatchSrc)
  {
  }

....  hier stehen noch viele weiter punkte drinnen bei denen ich die 
weiteren Fehlermeldungen erhalte ...

}

Im meinem geringen Basisverständniss von C++ ist das die Defintin der 
Klasse COleDispatchDriver.der Fehler wird an der Öffungsklamemr der 
Klassendefinition angezeigt.

Die Fehlermeldung verstehe ich so, das es eine Basisclasse geben müsste 
auf der diese Definition zurückgreift.

Nun verstehe ich nicht was dann am Cod falsch sein soll bzw wo ich das 
ganze ändern muss, damit das ganze funktioniert, daher meine erste frage 
ob das ganze Programmspezisch ist oder nicht( befürchte ja nein...)
Wenn einer eine komplette Lösung des PRoblems hätte wäre das natürlich 
traumhaft.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan K. schrieb:
> 1>C:\Programme\Microsoft
> SDKs\Windows\v7.0A\include\Excel_test\excel8.h(8): error C2504:
> 'COleDispatchDriver': Basisklasse undefiniert

Eben. COleDispatchDriver ist hier unbekannt. Was macht man da?

Man sieht in die Dokumentation

http://msdn.microsoft.com/de-de/library/fw39e08y%2...

Und darin steht

Header: afxdisp.h

Ändere also die Headerdatei stdafx.h und trage dort #include <afxdisp.h> 
ein.

Autor: gk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls es jemand interessiert, man kann so eine .xls Datei auch "zu Fuss" 
relativ einfach auslesen. Sie besteht aus einer Kette sogenannter 
Biff-Records:


 1.Record                                                 2.   n.
 |  WORD 16bit  |     WORD 16bit     |   BYTES variabel | .... |  WORD 
16bit
 | Recordnumber | Record Data Length |   Record Data    | .... | 
Recordnb.

Man liest zuerst das erste WORD und dekodiert den Typ. Falls das der 
gewünschte Typ ist, zb, 0003 für floating Point dann kann man den anhand 
der Record Data Length einlesen und dekodieren. Wenn nicht hangelt man 
sich zum nächsten Record durch usw...
gk

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.