Seite 1 von 2
[gelöst] Excel und QT
Verfasst: 11. April 2006 19:41
von Marco812
Hallo,
ich kann eine Verbindung zu Excel herstellen und auch öffnen. Nun möchte ich Werte in die Zellen schreiben, leider kann ich nicht auf den Value einer Zelle bzw. eines Ranges zugreifen.
Wäre jemand so nett, und würde mir sagen wie ich Werte in einen Range bzw. in eine Zelle eintragen kann.
Gruß
Marco812
Verfasst: 11. April 2006 20:03
von patrik08
Ich Verleie dir den preis fuer die Grosste source c++ datei...
15 MB source datei & 5MB fuer den Header... da brauche ich ja 3 tage bis ich jede zeile gesehen habe ... (mit mac & Win noch nicht kompilierbar)
Das letzte mal als ich eine excel generiert habe mit 2600 zeilen & ca 17 col .. kann ich sagen das der Konverter gerade 2 kiloByte wiegte...
origianal ....
http://ciz.ch/svnciz/addoxml/Excel_Export.xsl unter 3 sekunden..
ach... im pdf mit diesem konverter 15K
http://www2.editore.ch/user/_dado/conve ... a_full.xsl mit bilder unsw.. ist das resultat Iher ..
http://www2.editore.ch/user/_dado/compl ... ditore.pdf
etwa 2MB pdf mit 40 bilder ca..
Verfasst: 11. April 2006 20:37
von Marco812
Hallo,
danke für den Preis, aber den musst du mir nicht verleihen, ich habe die *.cpp und *.h natürlich nicht geschrieben und denke auch nicht das man die durchschauen muss. Ich habe es einfach wie in der
Dokubeschrieben mit dem dumpcpp Tool gemacht.
Hast du einen besseren Vorschlag, wie ich das machen kann?
Gruß
Marco812
Verfasst: 11. April 2006 21:00
von patrik08
Was fuer ziel? Nutzen? als excel ersatz? oder Openoffice ersatz?
Zur zeit baue ich ein fakturations programm das hat den excel und pdf export...
Die Planung ist die 1/2 arbeit...
Verfasst: 11. April 2006 23:04
von Marco812
Es soll kein Excel oder OpenOffice Ersatz sein. Wahrscheinlich hast du durch das QTableWidget vermutet, dass das Programm als Excel ersatz dienen soll, aber dem ist nicht so. Wie gesagt es ist nur ein Beispiel und in meinem Programm gibt es kein QTableWidget. Die Daten sollen lediglich aus dem Programm in eine Excel Tabelle exportiert und von dieser auch wieder Importiert (gegebenenfalls bearbeitet) werden können. Die Tabelle soll dann in etwa so aussehen:
A B C D
1 Bearbeiter Eintrag1 Eintrag2 Eintrag3
2 Wert1 Eintrag1 Eintrag2 Eintrag3
3 Wert2 Eintrag1 Eintrag2 Eintrag3
4 Wert3 Eintrag1 Eintrag2 Eintrag3
Es gibt genau 15 Werte in Spalte A und diese sollen beliebig viele Einträge erhalten können in den Folgenden Spalten. Sicherlich hätte man das auch mit einem QTableWidget lösen können und hätte Excel nicht benötigt, aber es soll ein Excel-Export geben und daran kann ich nichts ändern.
Hoffe die Schilderung des Problems ist genau genug und du kannst mir weiterhelfen.
Verfasst: 12. April 2006 16:16
von patrik08
Also fuer einen excel export ... mit Excel 2003 geht es sehr gut auch mit makro.. (nur im xml format..!)
mit openoffice sowieso

(ander tag un namenspace .. aber kein problem zum erkennen)
Bill Gates format ist dann so...
http://ciz.ch/svnciz/cache/tosh.xls auch mit formeln wenn sein muss...
dan der xslt converter nimt die felder von intersesse
http://ciz.ch/svnciz/cache/also.xsl oder auch alle...
als resultat ist dann eine saubere xml die eingelesen wird als mit xml2array ....
von diesen array weiter zur qt table oder auch db .... und die table ist da...
Fuer den export... via db oder array (vector) ins dom create tag ecc.. und die xml ist wieder da... und wieder mit dem xslt converter isns excel utf8
oder ins contenten.xml von openoffice was dann gezipt wird... unbenant auf .sxw oder auch den neuen format von openoffice..
da openoffice eine source datei ist immer .. aber gezipt ( schaue die bilder an auf
http://ciz.ch/service/88,1093521151/it/ .. !nur die bilder! ausser du kanst italienisch) ....
Der grosse vorteil ... wen mal die formate aender .. muss man nur beim converter modifiezieren... nicht das ganze ding..
Die teuro variante ... die libs von microfoft kaufen .. hatte mal ein kunde der was so komplizierte wollte .. die preise sind 5'stellige zahlen
gerade heute habe ich die sablotron XSLT libs erfolgreich kompiliert ... und funktioniert prima..
http://devpaks.org/details.php?devpak=132 .. nun bin ich ab bastelt so dass es auch im qt geht...
Auf dieser weise habe ich ein www shop automatisch updatet ... taglig! 15monaten immer um 4 uhr morgen... mit libcurl login user passwort beim grosshandler ... die excel geladen konvertiert und in die db rein.... aber mit php...
Verfasst: 12. April 2006 18:00
von Marco812
Hallo,
ja das finde ich richtig toll, was du alles gemacht hat und denke auch dass du richtig Ahnung hast. Das alles Hilft mir aber recht wenig, denn ich kann mein Problem immer noch nicht lösen.
In meiner *.h sheht jetzt folgendes:
Code: Alles auswählen
Excel::Application* xlApp;
Excel::Workbooks* xlWorkbooks;
Excel::Workbook* xlWorkbook;
Excel::Worksheet* xlWorksheet;
und in der *.cpp
Code: Alles auswählen
xlApp = new Excel::Application;
xlWorkbook = xlApp->Workbooks()->Add();
//..
xlApp->SetVisible(true);
Mir fehlt aber jetzt soetwas wie xlWorksheet = xlWorkbook->Worksheets("Tabelle1");
und xlWorksheet->Cells(1,1)->CellValue("Eintrat in A1");
Wäre es evtl. möglich, das du mir ein kleines Beispiel machst, so das ich das ganze verstehe. Im Internet findet man leider wenig, bis keine Beispiele
Gruß
Marco
Verfasst: 13. April 2006 00:40
von patrik08
Marco812 hat geschrieben:Hallo,
Wäre es evtl. möglich, das du mir ein kleines Beispiel machst, so das ich das ganze verstehe. Im Internet findet man leider wenig, bis keine Beispiele
Marco
Bei koders.com .... suche Excel gibt es 240 source file header & source... und sogar eine libs opensource.... um eine excel zu bearbeiten...
lese doch bitte auch =>
http://www.qtforum.de/forum/viewtopic.p ... ight=#9258
Ich wuerde niemals statisch die daten im c code reinschreiben
( CellValue("Eintrat in A1"); ) sondern ich wuerde von anfang an eine portable db machen wie sqlite .. die ist einfach spitze... und vorallem schnell..
Dann wuerde ich funktionen und macro bauen um jederzeit die daten zu aendern oder rechnen.... und sortieren...
wenn ich das alles habe mache ich den qt4 designer auf und bastle das gui wie ich die daten darstellen will mit kunden wuenschen... dann ...
mache ich den Internet explorer auf ( was ich fast niee brauche..) gehe zu
http://ppk.ciz.ch/qt_c++/qt/res.html und gebe die Classe namen ein von den verschiedene dialoge... und generiere header & source... das haupt fenster auch ... ... mache die verchiedene file zum funktionieren ohne nichts anders drinnen ... wen der Gui lauft ...
mache ich einen back-up ... oder schmeise die file unter subversion.. (mit einem rechts kik)
http://subversion.tigris.org/ das heisst ich versioniere den code ... wenn ich mal was falsch mache kann ich alle versionen betrachten .. von den file ... schritt fuer schritt... und sehen wo die problemen angefangen haben...
[falls du keinen subversion server hast ... bei mir gibt es fuer 20 euro im monat ... 3 GB.. denke daran ... wie fehler verfolgen auf der C platte unmoeglich!!!]
dann ..schreibe ich die verschiedene funktionen rein ... und einen bat file + wincron ... macht alle 4-6 minuten einen "Make distclean" und qmake file.pro .... && make...
so sehe ich ob ich was falsch mache.. vorteil oder nacht teil alle 4-6 minuten kommt einen cmd fenster .. und redet mit mir

Verfasst: 16. April 2006 20:05
von Marco812
Hallo,
ja ist klar, dass man keine statische Daten in den Code schreiben sollte, das war auch nur ein Beispiel. Einen Subversion-Server habe ich schon, aber dennoch vielen dank für den Tipp und das Angebot.
Ich habe mir echt mühe gegeben, gelesen, getestet und jetzt auch Beispiele gefunden, abe die funktionieren nur mit VC++ und MFC. Ich benutze aber Eclipse und MinGW von daher unbrauchbar für mich.
Könntest du bitte so nett sein, und mir ein kleines Beispiel machen, in dem ich Werte in eine Zelle eintragen und diese wieder auslesen und im Programm darstellen kann. Es braucht auch nix großes sein, es geht mir nur darum, dass ich mal das Grundprinzip verstehe und umsetzen kann.
Wäre echt super wenn du das machen würdest.
Gruß
Marco812
Verfasst: 16. April 2006 23:45
von patrik08
Soweit ich denke hast du 1000 vorteilen... mir gegenueber...
1 .... kspread ist erst ein update da... 2006
http://www.koffice.org/kspread/ ...
2 .... du hast noch den
LUXUS! jeden einzelne schritt fuer schritt zu beobachten was die programmierer gemacht haben jede einzelne zeile un schritt ...
reich an kommentaren... wie ein film ... danke an subversion... jede diff und ist mit datum signiert...
3 ... dein freund und helfer subversion
http://developer.kde.org/source/anonsvn.html wie einen blog oder tagebuch... vom source...
4 ... du hast die classen bereits da ... musst vieleicht noch an os win was anpassen...
also wenn du linux/mac benutzen kannst ... mit ( grep -R "keywort" * ) findest du auf die zeile genau wie so ne tabelle arbeitet...
suche dort QTableView qtext kde ist auch qt aber eben linux... doch viel ist auch auf win portiert...
Hingegen ich suche zur zeit einen QSyntaxHighlighter fuer xml oder html
in mitten
http://www.kde-apps.org/index.php?xcontentmode=210
vielleicht finde ich mitten im Syntext Serna etwas ..
http://www.kde-apps.org/content/show.php?content=14728
in meinen firefox start page habe ich etwa 5 seiten eine gute qt adresse ist auch
http://www.blogistan.co.uk/qt/ .... qt blog ... alles was neu ist mit source apps unsw...
es gibt milliarden von fertige c++ zeilen ... suche & finden ist in 5 minuten...
ciao
Verfasst: 17. April 2006 01:31
von Timewarp
Also ich muß mich erstmal beim Threadersteller entschuldigen ! Ich kann dir leider nicht helfen. Jedoch kann ich mich auch nicht davon abhalten hier zu posten.
@patrik08: Was bist denn du für einer ? Nur zu deiner Information: Das hier ist ein Forum und kein Blog oder eine Werbeplattform. Anstatt dich in die Situation deines Gegenüber hinein zu versetzen, bestehen deine posts mind. zu 3/4 aus total unnötigen Informationen. Ich glaube z.B. nicht das es jemanden interessiert welchen Browser du benutzt. Du magst vielleicht schon viel mit/um Excel programmiert haben aber Wissen weitergeben tust du hier nicht.
Dem ganzen setzt du dann noch die Krone auf indem du hier einen Subversion-Server anbietest. Tickst du noch ganz richtig ? (mal davon abgesehen halte ich den Preis für ziemlich überteuert).
Im Endeffekt hilfst du 0 und sagst dann in deinem letzten Post so in etwa: Die Lösung des Problems gibts im Internet ! Ganz toll
Verfasst: 17. April 2006 02:14
von Marco812
Hallo,
ich habe mir KOffice und das Programm KSpread angeschaut. So wie ich das beurteilen kann ist KSpread ein Tabellenkalkulationsprogramm ob es eine Export Funktion nach Excel hat, weis ich nicht. Wie du schon geschrieben hast gibt sicher Milliarden von Zeilen, aber genau damit kann ich nichts anfangen. Mir würden schon 5-10 Zeilen reichen, die ich umsetzen du verstehen kann was nützen mir ein Millionen von Zeilen wenn ich sie nicht verstehe.
Ein großes Dankeschön an Timewarp, auch wenn du mir nicht helfen kannst, aber zumindest hast du mein Problem verstanden und begriffen das mir nicht viel, sondern ein konkretes und kleines Beispiel Hilft.
Also noch mal vielleicht findet sich ja doch jemand der mir ein paar aber funktionierende Zeilen schreiben kann. Ich versuche es noch mal zu Erklären:
Mit dumpcpp {00020813-0000-0000-C000-000000000046} erstelle ich mir meine excel.h und excel.cpp siehe dazu auch in der doku unter
http://doc.trolltech.com/4.1/activeqt-d ... mpcpp.html
und so kann ich dann mir Hilfe dieser excel.h und excel.cpp auf Excel zugreifen (zumindest fast) Ich kann ein Workbook hinzufügen und Excel Öffnen.
Excel::Application* xlApp;
Excel::Workbooks* xlWorkbooks;
Excel::Workbook* xlWorkbook;
Excel::Worksheet* xlWorksheet;
xlApp = new Excel::Application;
xlWorkbook = xlApp->Workbooks()->Add();
//..
xlApp->SetVisible(true);
Ich denke nur das ein Pointer falsch ist oder so. Deshalb meine Bitte an die Profis, schaut euch gegebenenfalls mein Beispiel an und sagt mir einfach die wahrscheinlich zwei bis drei fehlenden Zeilen um ein Wert in eine Zelle zu schreiben und diesen wieder auszulesen.
Gruß
Marco812
Verfasst: 17. April 2006 02:25
von patrik08
Gut .... kannst recht haben meine post sind etwas lange... Subversion ist ein Werkzeug .. und wenn man es benutzen kann ... findet man alles damit... mit vielen beispielen... im projekt qt teddy_1-1_win xml editor ist eine solche tabelle vorhanden... ala excel sogar win mac linux ...
http://www.kde-apps.org/content/show.php?content=21781 anstat excel sind es xml eintraegen .. sind auch daten felder...
Marco812 soll doch bitte dieses beispiel ansehen dann koennen wir es mittainander diskutieren wenn was nicht geht...
Ich frage ja auch nicht! .... "Ich suche ein syntax highlieter" fuer xml kann mir jemand ein beispiel schreiben...oder muster.... ich mache mich auf die socken und habe sowas gefunden im
http://kxmleditor.sourceforge.net/ und 3 stunden fuer diese klasse sind gespart... die classe QSyntaxHighlighter heiss auch so im kde...
Verfasst: 17. April 2006 03:13
von patrik08
Schreibe mal deine tabelle so.... um zu wissen wie viele felder und haupt daten da sind ... und auch um zu validieren....
Code: Alles auswählen
BEGIN TRANSACTION;
CREATE TABLE citta (cpa TEXT, nome_citta TEXT);
INSERT INTO citta VALUES(8355,'AADORF /TG');
INSERT INTO citta VALUES(5000,'AARAU /AG');
INSERT INTO citta VALUES(3270,'AARBERG /BE');
INSERT INTO citta VALUES(4663,'AARBURG /AG');
INSERT INTO citta VALUES(4912,'AARWANGEN /BE');
INSERT INTO citta VALUES(8607,'AATHAL-SEEGRäBEN /ZH');
INSERT INTO citta VALUES(8522,'AAWANGEN /TG');
INSERT INTO citta VALUES(1657,'ABLäNDSCHEN /BE');
INSERT INTO citta VALUES(5646,'ABTWIL /AG');
INSERT INTO citta VALUES(9030,'ABTWIL /SG');
INSERT INTO citta VALUES(3725,'ACHSETEN /BE');
INSERT INTO citta VALUES(1123,'ACLENS /VD');
INSERT INTO citta VALUES(6716,'ACQUAROSSA /TI');
INSERT INTO citta VALUES(3715,'ADELBODEN /BE');
INSERT INTO citta VALUES(8345,'ADETSWIL /ZH');
COMMIT;
dann nimst du
http://sqlitebrowser.sourceforge.net/ mit sqlite version3 hat auch tabelle felder.... machst eine neue datenbank file... importierst du die tabelle virtual excel so wie oben als SQL insert... aenderst die daten die kompf felder bis alles ok ist mit den daten...
als weitere schritt exportierst du diese tabelle als csv (cvs ist was anderes...) .... und nun importierst du die cvs daten im excel und hast die tabelle A im excel und die tabelle b im sql format...
als weiteren schreibe ich dir einen converter wenn ich die muster daten sehe structur (muss ich eben auch haben ) von xls (excel) .2003. xml => zu sql insert sowie cvs (dann kann man auch in access importieren)
als XSLT datei .... und von xml => zu excel wie beispiel
http://ciz.ch/svnciz/cache/tosh.xls ... ( kanns du ja bereit probieren ob deinen excel ab 2003 diese datei aufmachen kann... )..
dan lernst du die basis von xml xslt mit dem programm
http://ppk.ciz.ch/win_build/vxsltproc_win32.tar.bz2 sind 2 file drinnen zum testen... im "about dialog sind link drinnen wo"
ist einfach ein converter in vielen formaten die funktion Xslt_Proc::Fop_XSLT im file
http://ciz.ch/svnciz/dialog_qt/qt4_a/cu ... rapper.cpp macht die haup-aufgabe.... und die funktion Xslt_Proc::Fop_java ist eine bindung zu fop java um von tabelle im programm zu pdf zu exportieren braucht du vielleicht nicht ... aber ich muss es haben um rechnungen zu exportieren...
den source von teddy
http://www.kde-apps.org/content/show.php?content=21781 must du aber auch ansehenen um die daten vom vector zur tabelle zu bringen...sowie den sqlite browser source dort ist es auch drinnen aber mit qt3 ....
aber nicht !!! sqlite mit dem qt plug-in (der kann nicht alles!) ... dort kann man keine sqlite_function schreiben .. sonder benutze die originale sqlite3 lib .... es kompiliert sich in 40 sekunden... dann kann man macro schreiben in der db ... wie eben excel.... und select die nicht mal excel fertig bringt ... bis zu 2-3 terrabyte von daten sagt
www.sqlite.org... aber eben soviel daten bekommst du niemals von excel als import ... das bis heute maximum import wahr 800Mb ...
doku...
http://www.sqlite.org/capi3ref.html
Verfasst: 17. April 2006 13:15
von Marco812
Hallo,
du hast das jetzt alles zwar sehr schön beschrieben, aber ich verstehe immer noch nicht so ganz den Zusammenhang zu meinem Problem.
Ich habe die Daten in einer QMap stehen. Diese sollen nach Excel und umgekehrt. Ich habe dir die gewünschte sql + csv und eine Excel-Datei angefügt, wie sie nach dem Export aussehen soll. Hoffe das ist das was du brauchst, um mir helfen zu können.
Gruß
Marco812