Zum Inhalt springen

Exelsheets einlesen in Konsolenprogramm


krUst3

Empfohlene Beiträge

Hallo zusammen,

ich habe eine Frage zu einem C++ Vorhaben/Aufgabe von mir. Ich möchte eine Art Schnittstellenfunktion zwischen einem Exel-sheet und einer text-datei machen. Das schreiben der Werte in einen .txt bekomme ich ja auch formatiert hin. Mein Problem ist allerdings, dass ich keine Ahnung habe, wie ich die Werte aus den einzelnen Zellen einer ExelTabelle auslesen kann...

Also meine Grundidee ist es per Schleife alles Spaltenweise auszulesen in in einer .txt Datei formatiert (z.B. alles Werte durch ein Semikolon getrennt abzuspeichern, damit das gezielte Auslesen der Daten zu einem späteren Zeitpunkt möglich ist. Da ich mich erst seit kurzem in der Ausbildung befinde, fehlt mir das nötige etwas an Wissen ( :baby: ) ;) Bin aber schon sehr fleissig dabei.

Also Entwicklungsumgebung stehen mir Dev C++, Borlandbuilder und auch MS Visual 6.0 zur verfügung, was euch lieber ist.

Wäre nett, wenn ihr ein paar Ansätze oder Denkanstöße bringen würdet, aus dem ich dann nen Quellcode formen könnte

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, ich habe hier ein Makro in VBA, das ein Abbild einer Exeltabelle in eine txt schreibt...(habe sie von den Dateinamen her verändert ;) )

Public dateinameneu
Sub test1()


Filename = ActiveWorkbook.Name
PunktPos = InStr(1, Filename, ".")
dateinameohne = Mid(Filename, 1, PunktPos)
dateinameneu = dateinameohne & "TXT"

Application.Goto Reference:=Range("A1")
Do
i = i + 1
Loop Until (Application.Cells(i, 1) = "")

Application.Range(Cells(1, 1), Cells(i - 1, 7)).Select

Selection.Copy
Workbooks.Add
ActiveSheet.Paste
Set AktuelleArbeitsmappe = Application.ActiveWorkbook
Workbooks.Open Filename:="c:\ordner\irgendeine.xls"
Workbooks(AktuelleArbeitsmappe.Name).Activate

Application.Run "IRGENDEINE.XLS!speichern1", dateinameneu
ActiveWindow.Close SaveChanges:=False
ActiveWindow.Close SaveChanges:=False


End Sub[/PHP]

Ich sollte aber nach möglichkeit eine kleine Anwendung in einer Konsole schreiben :( , die dann die Daten an ein weiteres Programm übergibt. Wie diese Übergabe später aussehen soll/muss, kann ich ja noch entscheiden. Es geht primär um das Auslesen...

Wenn es geht bräuchte ich nur ein paar Ansätze, den Rest bin ich selber gewillt nachzuschlagen bzw. mir anzueignen :D

PS.: Danke für die schnelle Antwort

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wenn es geht bräuchte ich nur ein paar Ansätze, den Rest bin ich selber gewillt nachzuschlagen bzw. mir anzueignen

Ich wiederhole mich auch gern nochmal:

Soll das eine Übungsaufgabe sein?

Falls ja, gibt es noch weitere Vorgaben? Darfst du die Automatisierungsschnittstelle benutzen?

Der Ansatz hängt von der Antwort auf diese Fragen ab.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tschuldigung....Ja, es ist eine reine Übungsaufgabe für mich, also keine Prüfung oder Hausaufgabe oder dergleichen...

Von den Automatisierten Schnittstellen wurde mir nichts gesagt, sprich, mir wurde nicht gesagt, dass ich sie nicht benutzen darf :D

Ansonsten sind da keine großen Vorgaben, dass macht es ja so schwer für mich. ..Ich weiss ja auch noch nicht exakt, wie die Daten später an das andere Programm übergeben werden sollen. Deshalb kam mir ja die Idee, die Werte per ";" zu trennen (innerhalb der .txt) um sie später einfach auslesen zu können.

Könnte man denn die Funktion des VBA Makros in einen C++ Quellcode umwandeln, der aus einer Konsole heraus die Daten liest. (Konsole wäre mir sehr lieber, da ich MFC Dialoge nur mal kurz angeschnitten habe...)

Ich hoffe ich bringe hier keinen zur Verzweiflung :hells:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Könnte man denn die Funktion des VBA Makros in einen C++ Quellcode umwandeln, der aus einer Konsole heraus die Daten liest.
Könnte man. Das VBA-Programm liest allerdings nicht aus, sondern benutzt nur die interne Speicherfunktion von Excel. Wenn du die Daten anders aufbereiten oder an ein anderes Programm weitergeben willst, hilft dir das nicht.

Du kannst ja mal hier reinschauen (nicht wundern, wenn da eine Antwort ohne Frage steht ;))

http://forum.fachinformatiker.de/showthread.php?t=20841

Das könnte auch noch helfen:

http://forum.fachinformatiker.de/showthread.php?t=70912

Link zu diesem Kommentar
Auf anderen Seiten teilen

sorry, aber ich scheine in der Beziehung ein absoluter n00b zu sein...

Ich konnte in Visual über: "Projekt -> dem Projekt hinzufügen -> Komponenten und Steuerelemente"

nicht die "EXEL9.OLB" ins Projekt einbinden. Folgende Fehlermeldung wurde ausgegeben: "Die Ausgewählte Datei ist keine

identifizierbare Komponente" Sämtliche #include "..." oder include<...> Versuche wurde nicht akzeptiert,

auch wenn ich die Datei ins Projektverzeichnis kopiert habe...

Ich verzweifel hier noch :-(

Hier noch was zum lachen für alle Könner:

#include <iostream>
#include <windows.h>
#include <stdio.h>
using namespace std;

int main(int argc, char *argv[])
{
FILE *TestDatei;
TestDatei = fopen("C:\\test.txt", "r"); // Pfadangabe + Lesemodus

/* solange das Ende der Datei nicht erreicht ist,
liest und gibt das Programm zweilenweise jeden char aus... */

cout << "<<< Anfang der Ausgabe >>>\n\n";

while(!feof(TestDatei))
{
cout << char(fgetc(TestDatei));
}

fclose(TestDatei);

cout << "\n\n<<< Ende der Ausgabe >>>";
system("PAUSE>NUL");
return 0;
}[/PHP]

mir ist schon klar, dass das absolut basic-wissen ist und es mit ner .xls auch nicht klappt... :(

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich konnte in Visual über: "Projekt -> dem Projekt hinzufügen -> Komponenten und Steuerelemente"

nicht die "EXEL9.OLB" ins Projekt einbinden.

In dem verlinkten Thread stand auch nichts vom Projektmenü. Da stand:

ClassWizard->Automation-Add Class->From a type library

Auf Deutsch etwa: Klassenassistent -> Automatisierung-Klasse hinzufügen -> Aus einer Typbibliothek.

Hier noch was zum lachen für alle Könner:
Eher zum Weinen ;)

Stellst du das nur zur Unterhalten hier rein, oder möchtest du Kommentare dazu?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Naja, den wizard als assistenten zu übersetzen, da hat selbst big MS nen Fehler gemacht. Wusste zwar was gemeint war, konnte den trotzdem in einer reinen Konsolenapplikation nicht anwählen.

Hier nun kurz zu meinem Fortschritt:

Hab mittels ODBC probeweise ne access db in einen mfc dialog eingebunden. Auslesen klappt zumindest hier schonmal *freu*

Heute und morgen werde ich mir dann mal das selbe bei exel basteln...

Nur noch eine kleine Frage: Was für eine KLasse soll ich denn aus der importierten "exel9.olb" erstellen. Da gibts ja 100 versch. möglichkeiten (wobei ich den größten Teil ja selber ausschließen kann)

Wäre nett wenn ihr mir bei weitern Fragen helfen würdet, auch wenn ich eure (klotzkopp's) wertvolle Freizeit mit dummen Fragen in Anspruch nehme :-/

PS.: den geposteten code von mir bitte einfach überlesen :D

*TaschentuchFürTränenZuKlotzkoppReich*

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab mittels ODBC probeweise ne access db in einen mfc dialog eingebunden. Auslesen klappt zumindest hier schonmal *freu*

Heute und morgen werde ich mir dann mal das selbe bei exel basteln...

Wenn du ODBC benutzt, brauchst du die Automatisierungsschnittstelle nicht.

Was für eine KLasse soll ich denn aus der importierten "exel9.olb" erstellen. Da gibts ja 100 versch. möglichkeiten (wobei ich den größten Teil ja selber ausschließen kann)
Startpunkt ist immer _Application, wie auch in dem Beispielcode im verlinkten Thread.
Link zu diesem Kommentar
Auf anderen Seiten teilen

Also meine Grundidee ist es per Schleife alles Spaltenweise auszulesen in in einer .txt Datei formatiert (z.B. alles Werte durch ein Semikolon getrennt abzuspeichern, damit das gezielte Auslesen der Daten zu einem späteren Zeitpunkt möglich ist.

Das kann Excel schon von Haus aus. Speichere Dein Sheet (oder die aktuelle Selektion) als CSV-Datei.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...