13. maj 2000 - 01:36Der er
7 kommentarer og 2 løsninger
Hvordan får jeg et c++ program til at udskrive til et excel regneark?
Jeg skal have lavet et c++ program der kan udskrive data til enten et excel regneark, eller en access database. Det vigtigste er at det bliver udskrevet på en sådan måde at man uden videre kan åbne filerne. Programmet skal bruges af folk som har forholdsvis ringe edbindsigt og det kan derfor ikke forventes at de kan finde ud af så meget.
Jeg har også haft brug for at generere et Excel-regneark, og et med formler og lidt simpel formattering, dvs. så en kommasepareret fil ikke var nok.
Der er et "standard"-format, der hedder SYLK (sikke et navn), med extension: .slk
Prøv at tage et regneark, og gem det i dette format. Så kan du se, at det er rent tekstbaseret, med et par linier pr. celle + en header. Jeg har ikke nogen formel beskrivelse af det, og jeg har simpelthen gættet mig frem, når jeg skulle skrive tilsvarende linier i mine programmer.
Så vidt jeg husker kan man skrive tal og formler i felterne, samt sætte streger rundt om en celle, valgfrit i top, bund, venstre og højre side - med én tykkelse. Der er muligvis også en måde at lave gråskravering på.
Sidste gang jeg havde fingre i dette var et PHP-program, der skulle udtrække data fra en database på en webserver, og aflevere dette direkte i Excel, når brugeren trykkede på en knap. Desværre må du ikke se koden.
Jeg har ikke prøvet det fra c++, men fra delphi; alle officeprogrammerne ( word, excel og access) understøtter COM. Man kan bruge programmet som COM-server, og derved sætte ting og sager ind, udskrive osv. Prøv at kikke i hjælpen for at finde ud af, hvordan COM virker i C++.
Der findes et tredie format der kan anvendes, som jeg selv har brugt med held. Formatet er mere simpelt end SYLK, idet man f.eks. ikke kan formatere indholdet af de forskellige celler og det understøtter også kun et ark pr. mappe.
Herefter for hver enkelt celle i KOLONNEN: 1,0 "<Alfanumerisk data>" eller 0,<Numerisk data inkl. komma osv.> V
i slut af hver række: -1,0 BOT
efter alle rækker -1,0 EOD
Filen for et lille ark med 3 kolonner og 5 rækker (inkl. overksirfter) ser så sådan her ud: TABLE 0,1 "EXCEL" VECTORS 0,5 "" TUPLES 0,3 "" DATA 0,0 "" -1,0 BOT 1,0 "Kolonne 1 (Tekst n)" 1,0 "Kolonne 2 (Numerisk = n)" 1,0 "Kolonne 3 (Numerisk = n,n)" -1,0 BOT 1,0 "Tekst 1" 0,1 V 0,1,1 V -1,0 BOT 1,0 "Tekst 2" 0,2 V 0,2,2 V -1,0 BOT 1,0 "Tekst 3" 0,3 V 0,3,3 V -1,0 BOT 1,0 "Tekst 4" 0,4 V 0,4,4 V -1,0 EOD
soepro>> Nu spørgsmålet dukker op igen... Kan dit format klare formler i regnearket? I dit eksempel har du kun anført værdier... SYLK kan fint klare formler
Jeg er sikker på at det også kan klare formler, men jeg har ikke prøvet. Det korrekt endelse på formatet er .DIF. (Data-Interchange-Format - jeg tror det er lotus der oprindeligt har defineret det.)
Fint nok soepro - det må jeg prøve engang. Men ud over formler, kan SYLK også klare simpel formattering, f.eks. streger på kasserne. Kan .dif også det? Nej, du behøver ikke undersøge det, men hvis du lige står og ved det...
Desværre kan .DIF ikke indeholde diagrammer :( ... findes der et format der kan, og som stadigvæk er lige så simpelt i opbygning som DIF ?
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.