Daten in eine Excel-Tab schreiben.
-
Hallo,
ich muss z.Z. ein Prog coden, das Daten aus einer Datei in eine
Excel Tabelle bzw. Excel Datei schreibt. Ich hab aber überhaupt keine
Ahnung wie ich dies Anfangen soll.THX schonmal im voraus...
-
Geht das nicht am besten mit einem Makro in Excel.
Wenn das nicht geht, kannst du über COM/DCOM oder Aktive X mit Excel kommunizieren.
Wenn du die Daten aus einer Datei extrahieren mußt oder die Daten binaer in einer Datei stehen bietet sich eine temporäre Datei im ".csv" Format an. Du schreibst ein C-Programm das die Eingabedatei öffnet, die benötigten Daten extrahiert und diese (mit einen Delimiter z.B. ";") als ASCII in eine neue Datei schreibt. Diese Datei importierst du dann in Excel
-
Wo kann ich denn über das Format einer Exceldatei mehr erfahren ?
Kenne den Aufbau des Formats bzw. der Datei nicht und kann daher auch kein Prog zum auslesen bzw. schreiben coden.
-
http://www.wotsit.org/ - aber wenn du "über COM/DCOM oder ActiveX mit Excel kommunizierst" musst du das afaik gar nicht wissen
-
Hier nen kleines Beispiel das 500 mal einfacher zu verwenden als jedes Tut das ich im inte gefunden habe
#include <string.h> #include <stdlib.h> #include <stdio.h> #include <windows.h> #include <sql.h> #include <sqlext.h> #define CONNSTR "DBQ=ADR.XLS;DRIVER={Microsoft Excel-Treiber (*.xls)}" #define CONNLEN (sizeof(CONNSTR)-1) void main(void) { SQLHENV hEnv = 0; SQLHDBC hDBC = 0; SQLHSTMT hStmt = 0; SQLCHAR szConnStr[255]; SQLCHAR szFirstName[255]; SQLCHAR szLastName[255]; long nAge; SWORD cbConnStr; RETCODE rc; SDWORD sdwLNLen; SDWORD sdwFNLen; SDWORD sdwALen; int i; char szResult[1000]; SQLAllocEnv(&hEnv); SQLAllocConnect(hEnv, &hDBC); SQLDriverConnect(hDBC, NULL, (SQLCHAR*)CONNSTR, CONNLEN, szConnStr, sizeof(szConnStr), &cbConnStr, SQL_DRIVER_NOPROMPT); SQLAllocStmt(hDBC, &hStmt); SQLPrepare (hStmt, (SQLCHAR*)"SELECT * FROM [Sheet1$]", 23); SQLBindCol(hStmt, 1, SQL_C_CHAR, (PTR)szLastName, sizeof(szLastName), &sdwLNLen); SQLBindCol(hStmt, 2, SQL_C_CHAR, (PTR)szFirstName, sizeof(szFirstName), &sdwFNLen); SQLBindCol(hStmt, 3, SQL_C_SLONG, (PTR)&nAge, sizeof(nAge), &sdwALen); SQLExecute(hStmt); for (i = 1; (rc = SQLFetch(hStmt)) == SQL_SUCCESS; i++) { printf("Datensatz #%d\tNachname: %s\tVorname: %s\tAlter: %d\n", i, szLastName, szFirstName, nAge); } if (rc != SQL_NO_DATA_FOUND) { //Fehler } printf("Operation war erfolgreich.\n"); if (hStmt) SQLFreeStmt(hStmt, SQL_CLOSE); if (hDBC) SQLDisconnect(hDBC); if (hDBC) SQLFreeConnect(hDBC); if (hEnv) SQLFreeEnv(hEnv); }
-
Wenn ich deinen Text oben richtig interpretiere, willst du aus einer Excel Datei Daten extrahieren um diese dann in Excel zu bearbeiten.
Mal ganz banal ausgedrückt. Um mich mit meinem Nachbarn (ebenfalls des Deutschen mächtig) zu unterhalten schwätz ich auf Englisch.
Wenn die Ausgangsdatei Execl ist die Destinationdatei Excel ist, dann nimm doch Excel um die Daten zu extrahieren, dafür gibst da Macros in VBA (Visual Basic für Applikations).
-
Joo, danke für den Code werd mich mal da durcharbeiten und
versuchen zu verstehen.Bei weiteren Fragen werd ich mich melden.
Ok. THX.