06. juli 2007 - 15:37Der er
7 kommentarer og 1 løsning
Opret og skriv til excel fil - uden at have excel installeret!
Hej
Er det muligt at lave et program med VB6 der kan oprette og skrive til en excel fil, selv om programmet kører på en computer uden excel installeret?
Jeg har fundet ud af at lave noget kode, der kan åbne excel og række for række skrive værdier i cellerne, men på den computer som programmet skal køre på (den er tilsluttet måleudstyr i et laboratorie) er der ikke excel.
Jeg havde forestillet mig noget lignende den normale write og append til en tekst-fil, bare med en excel-fil i stedet, så man slippede for selv at skulle importere tekst filen i excel. Det er også vigtigt at filen gemmes hver gang der er skrevet til den.
Programmet kunne eventuelt tage en tom excel-fil på computeren, kopiere og omdøbe den og så skrive i den.
Håber det er til at forstå hvad jeg vrøvler om ;-)
bubbaa er helt klart inde på noget. For du kan skrive dine data i/til en xml-fil, og når du så skal bruge det i Excel (for det skal du vel på et tidspunkt?), importerer du blot xml-filen.
Der er et par muligheder. Hvis du bare skal have mulighed for at åbne filen i et excel program for at bearbejde data, så ville det nemmeste være at oprette en CSV fil (Comma Separated Values). En sådan fil, som bare er en tekstfil, hvor de enkelte kolonner er adskilt med et komma og hver række af et linieskift. Det vil reelt sige, at det vil kunne ske med en simpel WRITE# instruktion.
OPEN "C:\temp\test.CSV" FOR APPEND AS #1 WRITE#1,celleA1,celleB1,celleC1,celleD1 WRITE#1,celleA2,celleB2,celleC2,celleD2 WRITE#1,celleA3,celleB3,celleC3,celleD3 CLOSE#1
Der er selvfølgelig den lille finte, at et dansk (kontinentalt europæisk) program vil forvente, at man i stedet for komma bruger semikolon til at separere værdier og bruger komma til at angive decimalpunktet. WRITE# indsætter imidlertid altid et komma mellem værdierne og skriver numeriske felter med et punktum som decimalpunkt. Det modsiger jo lidt hinanden på denne side af "dammen". Man vil dog altid kunne bruge import-funktionen til at indlæse en "Engelsk" CSV-fil. Nogle versioner accepterer også et "Engelsk" CSV format, hvis man dobbeltklikker på filen, men ikke hvis man bruger åbn-ikonet (Go figure!!). Men det vil under alle omstændigheder være forholdsvis nemt at lave det i en "Dansk" version med en PRINT# - hvor man selv indsætter kolonneseparatoren (;).
Med en CSV fil har man ikke mulighed for at formattere regnearket.
Hvis du ønsker at have mulighed for at lave lidt formattering af dine data, er der en anden mulighed. Selv om den vist ikke er dokumenteret, kan man bruge HTML kode til det formål.
Hvis du laver en fil med endelsen .XLS men fylder HTML i filen, vil Excel registrere dette under åbningen og fortolke indholdet. Dvs., at du kan bruge HTMLs table konstruktion til at tilføje farve, fonttype og størrelse til indholdet af cellerne.
En svaghed ved denne metode er, at det er svært at tilføje nye data til en fil, da det vil "ødelægge" HTML konstruktionen.
Ud fra dit spørgsmål antager jeg, at det er af større vigtighed at kunne tilføje data til en bestående fil end at kunne foretage "smukkesering" af data, så jeg vil tro, at en CSV fil er det bedste bud.
En helt tredie mulighed var en tabulatorsepareret tekstfil, som Excel også kan indlæse, men normalt vil en .txt fil jo ikke være tilknyttet Excel, så hvis man dobbeltklikker på filen, vil den sandsynligvis blive åbnet i Notepad, Wordpad eller lign. tekstbehandlingsprogram.
Der er sikkert også et par Active-X/OCX udvidelser, som kan bruges, hvis du har lyst til at betale lidt for det. Der er mange firmaer, som har specialiseret sig i sådanne udvidelser til standard VB.
Jeg er vist i min iver for at få sendt min kommentar kommet til at lave en fejl i html koden. <FONT> elementet skal naturligvis afsluttes igen. Selv om det koden bare var for at angive mulighederne, bør den naturligvis være i orden. Jeg håber der ikke er flere fejl... :-!
Tak for det... Jeg vil kigge lidt på det inden jeg vender tilbage med point :-)
Hele engelsk-dansk decimalseperator historien er netop grunden til at jeg vil have det direkte ind i en excel-fil. Er nemlig træt af at døje med excels import af data-fil guide ;-)
Lidt selvstændig googling gav lidt info om en ExcelFile.cls som måske også kunne være interessant. Om det kan gøre tricket ved jeg dog ikke...
Efter at have leget med skidtet hentet fra ovenstående link hele natten kan jeg nu konkludere at det ER the real deal - der er godt nok mange moduler og dll-filer der skal installeres, men det virker og er meget enkelt at bruge når det først virker.
Så... I skal alle have mange tak for hjælpen, men jeg tillader mig at snuppe pointene selv og så opfordrer jeg folk til at bruge ovenstående til fremstilling af Excel-filer i VB :o)
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.