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
-1 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
2 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

Autor: Schützenhofer. M (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich weiß nicht ob ihr das noch liest aber ich könnte eure hilfe 
gebrauchen.
Wie ihr früher Ali K. geholfen habt brauch auch ich eure hilfe.

Es geht praktisch um dasselbe (Excel Tabelle auslesen) nur mit dem 
Unterschied, ich habe eine große Excel-Tabelle wo ich zunähst die 
Messgrößen  festlegen muss bzw wieviele ich habe und diese 
weiterschicke. Dann muss ich Zeile für Zeile jeden Wert abfragen und an 
einen Server schicken (der die Werte dann auf einer UI ausgibt). (C++)

Ich habe kein großartiges Programmierwissen, also könntet ihr evtl. zu 
jeder Funktionsgruppe im Code dazuschreiben was sie macht, bzw wie sie 
Funktioniert? den Rest kann ich mir selber denken, hoffe ich.


Ich wäre euch unendlich dankbar!

mit freundlichen Grüßen
Martin

Autor: Andreas Fischer (chefdesigner)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Geht denn sowas nicht direkt per VBA? Mir hat mal einer vorgemacht, wie 
er in ein anderen Excel reinschaut und die Daten von da holt und 
umsoritiert, um sie in einem Excel zu verrechnen und auszugeben.

?

Autor: Musses unbedingt Visual Studio C++ sein?? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es auch python tut:
http://www.python-excel.org/

Autor: Schützenhofer. M (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Musses unbedingt Visual Studio C++ sein?? schrieb:
> Wenn es auch python tut:
> http://www.python-excel.org/

Nein leider muss es C++ sein und ja ich bräuchte echt eure hilfe.

Andreas F. schrieb:
> Geht denn sowas nicht direkt per VBA? Mir hat mal einer
> vorgemacht, wie
> er in ein anderen Excel reinschaut und die Daten von da holt und
> umsoritiert, um sie in einem Excel zu verrechnen und auszugeben.


Ich weiß nicht, ich hab mich mit VBA in C++ nicht auseinandergesetzt.
Kannst du mir ne Anleitung schreiben was ich tun muss um die Daten aus 
meiner Tabelle in ein Visual Studio Projekt einzulesen?

Ich bräuchte das nämlich ziemlich bald.
Dann wäre ich dir wirklich sehr dankbar.

mfg
Martin

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

Bewertung
0 lesenswert
nicht lesenswert
Es gibt hier zwei Möglichkeiten. Du kannst entweder Excel per 
Automation ansteuern und darüber auf einzelne Zellen zugreifen, oder 
Du erzeugst aus Deinem Excel-Dokument eine ODBC-Datenquelle und 
greifst auf die wie auf eine Datenbank mit entsprechenden 
ODBC-Funktionen zu.

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.

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