In Excel Datei schreiben
-
Will folgendes tun:
1.) Eine neue Excel Datei anlegen.
2.) Zellenweise in die geöffnete Datei schreiben.Nix Formatierung oder so. Nur Text und Zahlen sollen in die Zellen.
Wie macht man das?
-
also wenn du hier mal im Forum suchst, findest du doch genügend darüber ...
-
Stimmt. Schon gefunden. Danke.
-
Wenn du noch Fragen hast, ich kenn mich mittlerweile ein wenig aus, und überleg dir im Voraus genau was du alles machen willst und was nicht!!!
Ich hab drei mal angefangen!!Sag mir mal bitte was du erreichen willst und wie du es vor hast bzw wie du es machst
-
Danke für die Antwort.
Was ich erreichen will, weiss ich eigentlich sehr genau. Eigentlich auch nicht so etwas kompliziertes.
Habe STL-Vectoren. Nun möchte ich eine neue Excel-Datei erzeugen.
Dann müssen die Vectoren zeilenweise in die Excel-Datei. Die Elemente eines jeden Vectors werden auf die Zellen der Zeile verteilt.Hab jetzt mal gesucht, folgende zwei Links hab ich gefunden:
http://www.a-m-i.de/tips/office/officeautomation.php#cppexample_Excel
http://support.microsoft.com/kb/184663/Was ist da der Unterschied? Welche Anleitung soll ich verwenden?
EDIT:
P.S. Wie du schon sagtest, auf dreimaliges Anfangen habe ich keine Lust (und Zeit auch nicht). Daher wäre es gut, wenn du mir einfach kurz sagen könntest, mit welcher Anleitung es ganz sicher geht.
-
warum das Rad neu erfinden ? ? ?
http://www.codeguru.com/Cpp/data/mfc_database/microsoftexcel/article.php/c4307
ciao veganza
-
Ich wollte sicher nicht das Rad neu erfinden.
Ne, deswegen fragte ich ja.
Vielen Dank für den Tipp.
-
na wenn du mir nicht sagen willst was genau du machen willst kann ich dir leider nicht helfen! Aber mal nur als ein kleiner Tip willst du nachher ne FKT über ne Spalte machen die eigentlich NUMBER ist dann hast du mit der DB variante keine Chance!
-
rewe schrieb:
Ich wollte sicher nicht das Rad neu erfinden.
Ne, deswegen fragte ich ja.
Vielen Dank für den Tipp.
kein problem wußte den link auch nur weil ich an diesem Thread damals ( etwas ) beteiligt war:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-2319-and-highlight-is-excel.html
ciao veganza
-
Polofreak schrieb:
na wenn du mir nicht sagen willst was genau du machen willst kann ich dir leider nicht helfen! Aber mal nur als ein kleiner Tip willst du nachher ne FKT über ne Spalte machen die eigentlich NUMBER ist dann hast du mit der DB variante keine Chance!
Ne, warum sollte ich dir das nicht sagen wollen?!?
Was ich machen will, habe ich eigentlich schon gesagt.
Nur Zahlen+Text zellenweise in die Excel-Datei schreiben. Nichts weiter.Dafür sollte diese Klasse doch genau das richtige sein, oder? Oder warum denkst
du das das nicht funktionieren wird?
-
Also ich nimm jetzt mal einfach ganz mutwillig wie ich bin an du willst daten aus einer DB in eine Excel-Tabelle schreiben, oder??
Dann geht das nämlich viiiiiiiiiiiiiieeeeeeeeeeeeelll einfacher!!!! Flieg mal schnell über diesen Code hier:CDatabase database; CString sDriver = "MICROSOFT EXCEL DRIVER (*.XLS)"; // exactly the same name as in the ODBC-Manager CString sExcelFile = "c:\\demo.xls"; // Filename and path for the file to be created CString sSql; TRY { // Build the creation string for access without DSN sSql.Format("DRIVER={%s};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;CREATE_DB=\"%s\";DBQ=%s", sDriver, sExcelFile, sExcelFile); // Create the database (i.e. Excel sheet) if( database.OpenEx(sSql,CDatabase::noOdbcDialog) ) { // Create table structure sSql = "CREATE TABLE demo (Name TEXT,Age NUMBER)"; database.ExecuteSQL(sSql); // Insert data sSql = "INSERT INTO demo (Name,Age) VALUES ('Bruno Brutalinsky',45)"; database.ExecuteSQL(sSql); } // Close database database.Close(); } CATCH_ALL(e) { TRACE1("Driver not installed: %s",sDriver); } END_CATCH_ALL;
-
Polofreak schrieb:
Also ich nimm jetzt mal einfach ganz mutwillig wie ich bin an du willst daten aus einer DB in eine Excel-Tabelle schreiben, oder??
Dann geht das nämlich viiiiiiiiiiiiiieeeeeeeeeeeeelll einfacher!!!! Flieg mal schnell über diesen Code hier:Cool. Geht wirklich super einfach. Muss ich mir merken sollte ich das mal brauchen.
Bei mir ist es eben so das die Daten nicht in einer Datenbank sind - die Daten sind in Form von STL-Vectoren gespeichert.
Die Wrapper-Klasse von Godeguru werde ich jetzt trotzdem nicht benutzen. Die ist a) riesig und b) sollte die Klasse irgendwelche Probleme machen, bin ich ziemlich verloren.
Werde es jetzt mit dieser Hilfe da machen
http://www.a-m-i.de/tips/office/officeautomation.php#cppexample_Exceldas schaut relativ einfach aus. Und sollte gerade reichen, um die gestellte Anforderung zu erreichen.
-
Bei genauerem Hinsehen hättest du vielleicht bemerkt das der Code von
"Polofreak" in eine Excel-Sheet schreibt. Nur halt mit mit einem Excel-ODBC-
Datenbanktreiber.Das ist sicher einfacher als über COM, wenn das deinen Anforderungen, füllen
von Zellen aus STL-Containern, genügt.
-
bist du dir sicher dass du das von dir ge URLte machen willst?? Das ist nicht das, das du willst! du kannst doch auch aus deinen Vectoren über meine gezeigte FKt schreiben! Musst nur diesen Teil dynamisch gestalten
sSql = "INSERT INTO demo (Name,Age) VALUES ('Bruno Brutalinsky',45)"; database.ExecuteSQL(sSql);
Bzw halt mit ner Schleife drüber gehen!
CDatabase ist nur für Excel
bis morgen
-
ARGH. Hab es missverstanden.
Ne, klar, dann mach ich es natürlich so.
EDIT:
Hab es eben mal ausprobiert. Funktioniert genau so wie es soll!
Danke!
-
na siehste, jetzt haste echt richtig einfach das erstellen einer Excel-Datei und füllen über DB-Funktionen gesehen. Wenn du noch mehr Infos brauchst, kannst du auch mal in den Source schauen von Codeguru, das ist nämlich vom Prinzip her genau so gestaltet, kannst als da drin nach den Funktionen schauen. Wenn du doch noch formatieren willst, fett oder farbig oder autofit... dann melde dich einfach nochmal auch das bekämen wir hin
-
@ Polofreak:
Kannst da auch mal Code zu posten? Also was Formatierung von Zellen betrifft?
-
aber über das Database-Objekt geht es leider nicht.
Ich kann dir gerne Code posten. Schau dir aber zuerst mal das nochmal an. Hast ja schon, aber haste das denn auch verstanden? Denn auf dem basiert was ich dir erklären will. Wenn du das verstanden hast dann versuch das, Grundprinzip mal aufzustellen und wenn du dann Probleme hast melde dich noch mal.
-
Ich melde mich noch mal.
Also, ich brauche zwei Funktionen:
- Schrift einer Zelle auf Fett ändern.
- Format einer Zelle auf 'Zahl' ändern.Kannst mir helfen? Dank schon mal.
BTW: Das Schreiben in Excel funktioniert sehr gut.
Nur eine Kleinigkeit stört noch: Fülle ich z.B. den Wert "text" ab, steht in Excel schlussendlich effektiv "'text". Also mir einem führendem Hochkomma.
Gibt es da eine Möglichkeit das dies nicht erscheint?
-
Es gibt schon möglichkeiten, dass das nicht erscheint, das Problem ist nur diese Möglickeit gibt es nicht wenn du Excel als DB Objekt benutzt! Dieses führende ' soll soviel bedeuten wie diese Zeile ist keine Zahl. Dazu müsstest du Excel nun auf eine andere Art und Weise automatisieren. Ich meine du hättest dich da mal in irgend eine Art eingelesen, denn ich hab dir zu verschiedenen automatisierungsarten ne Funktion zum fett schreiben. Aber wenn du sowas machen willst darfste nicht vergessen, du musst Excel als Objekt einbinden. Da kommste nicht drum herum. Ich glaube du hast dich in ein schema eingelesen, wozu diese Funktion passen könnte:
// macht übergebenen Bereich (Schriftart) FETT bool CExtendedExcel::Fett(CString VonZelle, CString BisZelle) { //LPCTSTR wird benötigt um Bereich zu holen LPCTSTR von = _T(VonZelle); LPCTSTR bis = _T(BisZelle); try { //Bereich holen xlRange = excel->GetRange(von,bis); //Für gewählten Bereich Schrift fett machen xlRange->Font->Bold = true; //Fett machen return TRUE; } catch(_com_error &ce) {//Fehlerbehandlung m_sLastError = ce.Description(); return FALSE; } }