Excel Tabelle in C++ einfügen, nur wie?

3 Antworten

Wenn du noch Anfänger bist, dann rate ich dir davon ab direkt Excel ankoppeln zu wollen. Das ganze ist nämlich aufgrund des Formates nicht so einfach, wie man sich das vorstellt. Die beste Möglichkeit für dich wird wahrscheinlich sein, deine Excelarbeitsmappe einfach mit Hilfe des Befehls "speichern unter" als "Tabspottgetrennte TXT" oder als "CSV" abzuspeichern. Beide Dateien könntest du dann einfach mitm Editor öffnen und sie zeigen beide eine sehr einfach Syntax zum Einlesen der Daten!! Die Programmierung wird somit Kinderleicht!

JO1401 
Fragesteller
 10.02.2012, 16:31

In wie fern würde denn dann der Quelltext aussehen? Könntest du mir ein kleines "Tutorial" machen mit Kommentagen, was die jeweilige Quellzeile "macht"? Danke

0

Is zwar schon ewig her, aber wüßte keine Art mit der das so wie dus beschreibst funktioieren würde. Du kannst allerdings eine Excel Tabelle benutzen, um eine selbst geschriebene Datenbank damit zu füllen. Dazu würde ich die Excel Tabelle als csv abspeichern und dann über eine entsprechende Funktion in deine Datenbank importieren. Bei einer csv Datei sind die einzelnen Daten immer durch ein ganz bestimmtes Zeichen (z.B. ;) getrennt, so das du die Daten beim Einlesen einfach anhand der Position zuordnen kannst. Also z.B. Lieferscheinnr.;Name;Vorname;Straße;.... Wäre mein Ansatz, aber da kommen bestimmt noch nen paar...

JO1401 
Fragesteller
 10.02.2012, 16:20

Danke schonmal für die Antwort. Mein Projekt muss in c++ geschrieben werden. Die Vorgaben unsres Lehrers ware: 500 Quellcode-Zeilen, Schleifen ohne Eingabe- und Wiedergabewert und ein Thema nach Wahl. Wäre es den möglich irgendwie die Daten aus einer normalen textdatei zu "importieren"?

edit: hab die Antwort dadrüber nicht gesehen^^ Somit beantwortet sich meine Frage von selbst!

0

Schau dir mal die Bibliothek fstream.h an. Dort kannst du via ifstream (input filestream), eine Textdatei einlesen, kann natürlich auch eine mit Excel exportierte csv sein. Via Stringverarbeitung entsprechend bearbeiten und damit die Tabelle in C++ ausgeben oder bei Bedarf sogar bearbeiten, via ofstream.

Woher ich das weiß:Berufserfahrung – Softwareentwickler/Projektleiter seit 2012
JO1401 
Fragesteller
 10.02.2012, 16:43

Werd ich mir mal anschauen, danke. Ich möchte, wenn die Lieferscheinnummer z.B. 123456789 ist die zu gehörigen Datein auslesen. Geht das denn, wenn alle Daten in einer Textdatei sind oder muss ich dafür jeweils ein seperates Textdokument anlegen?

0
apachy  10.02.2012, 17:59
@JO1401

Wenn du Daten in Excel in eine CSV speicherst in der Aufbau in etwa so

ArtikelNr;Artikelname;Preis
1;Wurst;1,20
2;Käse;2,20
3;Brot;2,30

Dann kannst du in dieser Datei die entsprechenden Zeilen einlesen und anhand des ; festmachen, an welcher Stelle du dich befindest. Mit einen String könntest du mit der Funktion getline() eine ganze Zeile einlesen könnte bei einem fstream so aussehen:

#include <fstream>
#include <iostream>
#include <string>

int main() {
    string input;
    ifstream fin; // fin in Anlehnung an cin    
    fin.open("C:\\Beispielordner\\Datensatz.csv");
    while (fin) {
        getline(fin, input);

    }
    return 0;
}

Nur als kleines Beispiel. Innerhalb der While-Schleife nach dem getline() könntest du nun mit der entsprechenden Zeile, welche nun in input gespeichert ist weiterarbeiten. Via String-Funktionen wie Find oder SubString könntest du den String nun zerschnibbeln in einzelne Teile (entsprechend nach dem Trennzeichen, in dem Fall ein Semikolon, suchen) und es z.B. in ein Array oder einer verketteten Liste abbilden.

Natürlich kannst du die Ausgabe einfach so reinposten oder sofern du grafisch arbeitest z.B. mit VCL Komponenten ein StringGrid benutzen.

0
apachy  10.02.2012, 18:30
@apachy

Seh gerade was du schon hast, ist halt viel Spielerei und wenig funktionelles. Nicht böse gemeint aber spätestens wenn Funktionen und Klassen kommen, wirst du sehen dass es erstmal wichtig ist eine Art Bauplan für ein Programm zu entwerfen und die entsprechenden Werte rauszukriegen und so Geschichten wie dieser Ladebalken dann erstmal für Verwirrung sorgen bzw. wenn zum Schluss kommen.

Ein für sich brauchst du nur fstream und die Stringmethoden substr() und find(). Mit Hilfe dieser Methoden wäre dein Problem zu realisieren.

Kommt halt drauf an wieviel Zeit du hast, da du dich schon ein wenig damit auseinander setzen musst und auf einige kleine Probleme stoßen wirst, welche du umgehen musst z.B. das find gern ein Index liefert der OutofRange ist und abgefangen werden muss via Exception oder if(find(';',position) < find.length())

0