[ prginfo @ 12.05.2010. 10:50 ] @
Koristim D2007 i želeo bih da uradim export podataka nekog DBGrida u .xls fajl (ili neki drugi format koji je podržan od strane excella).

Ali, naravno ali, da export može da se uradi i ako na računaru ne postoji instalirano ništa od MS Office proizvoda, tj. da se uradi praktično snimanje fajla u .xls formatu.

Naišao sam na forumu na neku staru ideju o prebacivanju podataka u html tabelu koja se otvara u Excellu, ali tragam za elegantnijim rešenjem.

Unapred se zahvaljujem.
[ dejanet @ 12.05.2010. 11:27 ] @
Ako je projekat komercijalan razmisli o ovoj komponenti, ja sam koristio pre 6 godina, a vidim da je Lars jos ziv..

http://www.axolot.com/components/xlsspreadsheet.htm

Druga opcija XML spreadsheet..
[ sasaz2008 @ 12.05.2010. 11:50 ] @
Iz kog razloga je neophodan .xls? Daleko jednostavnije je da se napravi .txt u kome su polja razdvojena tab-ovima, a linije CRLF. Posle toga je trivijalno da se iz Excel-a uveze takav fajl.

Druga mogućnost je ona koju je već kolega predložio, ali komponenta košta oko 500 Evra.

Treća mogućnost je OpenOffice i OLE/COM, ali nema dodatnih finansijskih troškova.

[Ovu poruku je menjao sasaz2008 dana 12.05.2010. u 13:08 GMT+1]
[ prginfo @ 12.05.2010. 21:43 ] @
Naravno da nije neophodan .xls fajl, što sam i napisao u postu.

Što se tiče komercijalnih varijanti, za sada to ne bi bila moguća opcija (naročito ako je iznos 495EUR).

Što se tiče TAB delimited .txt fajla, što se tiče naprednijih korisnika, to je u redu, ali što se tiče običnog korisnika, njega zanima ‚‚da to klikne, i da mu se to otvori‚‚ , tako da gledam što jednostavniju varijantu za korisnika.

Što se tiče OpenOffice-a, to nije problem, ali, suština svega je da se napravi export podataka DBGrida u određeni format, bez da korisnik ima instalirano MS Office, Open Office.
[ tkaranovic @ 13.05.2010. 06:01 ] @
Može .odt koji je Open Office fajl a trebalo bi da može da ga otvara i MS Office. To je u suštini zip fajl i uglavnom se može, recimo, samo pisati i čitati content.xml, dopisujući ili čitajući vrednosti u ćelijama.
[ sasaz2008 @ 13.05.2010. 07:09 ] @
prginfo,

Format .xls fajla je izuzetno kompleksan, tako da bez detaljnijeg upoznavanja sa strukturom teško da se može bilo šta raditi bez OpenOffice-a ili MS Office-a.

OO nudi snimanje u .xml formatu koji podržava MS Excel 2003 (mada u verziji OO koju koristim prijavljuje grešku prilikom kreiranja fajla). Možeš takodje da probaš ovo što je tkaranovic sugerisao (dearhiviranje/izmena/arhiviranje .ods/.odfs fajlova), mada u tom slučaju korisnik bi trebalo da ima najnovije verzije ili OO ili MS Office-a da bi se otvaralo "na klik", uz napomenu da par bajtova header-a tako kreirane arhive mora da bude malo izmenjeno... Problem koji je u ovim varijantama očigledan, je da korisnik mora da ima minimum neophodne verzije MS Office odnosno OO koje bi mu omogućile čitanje tih fajlova. Novije verzije MS Office po default-u snimaju u OO stilu (arhiva sa mnogo .xml fajlova i subdirektorijuma)...

Na kraju, da li je sva ova komplikacija vredna truda, umesto snimanja u .txt fajl?!


[Ovu poruku je menjao sasaz2008 dana 13.05.2010. u 08:28 GMT+1]
[ X Files @ 13.05.2010. 07:44 ] @
Ako slogove odvojis zarezima i snimis u CSV ekstenziji (Comma-Separated Variables), kao obican ASCII fajl, otvorices ih direktno Excel-om. Kasnije snimaj u cemu god.

Manipulaciju EXCEL fajlom mozes ostvariti i kroz 'obican' ADO, primer:
http://www.elitesecurity.org/p2084542

Doduse, nisam nikada pokusao kreiranje samog fajla, ali verujem da bi i to moglo. Ako ne moze, onda prosto napravi jedan prazan XLS fajl, strpaj ga nekako uz projekat (kao resurs, kao nezanisan fajl, kako god) i koristi ga kao pelcer.
[ sasaz2008 @ 13.05.2010. 08:49 ] @
Uzgred, lično bih CSV zaobišao. U prošlosti, bilo je previše problema: komponente, neodgovarajući separator za tekst polje (" ili ' - primer, ime firme: A.D. "Komerc", -'Beograd i sl.), Unicode... Korisnik u tekst polju same aplikacije može da piše šta hoće, ali je CSV suviše restriktivan po ovom pitanju...
[ exdatis @ 13.05.2010. 09:05 ] @
Ja odavno koristim upravo csv, separator sloga moze da bude i '|'(sto ja koristim) i onda tesko da ce da bude
problema. OOffice uglavnom uvek pita sta je separator slogova i da li je string ogranicen navodnicima.
Posto je krajnje jednostavno iz bilo kog alata-jezika zapisati ovako nesto u fajl, mislim da je csv vise nego
logican izbor.
Kada su u pitanju nasi karakteri, naravno da problema moze da bude puno, narocito ako imas korisnike koji
koriste razlicite OS a csv se recimo generise iz nekog upita, ali to je problem firme koja ima racunare sa
razlicitim sistemima ili arhitekturom. U praksi, ja koristim openSuSe kao server na kom je baza i imam preko 200
klijenata, a koristimo openSuSe, Xp i Vista, zato ne dozvoljavam svakom azuriranje osnovnih podataka i tako
izbegavam ovaj problem. Do sada nisam imao vecih problema.
[ tkaranovic @ 13.05.2010. 14:34 ] @
Taj CSV je tekst fajl a, koliko sam probao, za razliku od tekst fajla može se učitati bez greške. Može da ima i ćirilicu i latinicu odnosno kao unikod da se piše i čita. Prilog poruke je unikod.csv.
[ Boris B. @ 13.05.2010. 14:57 ] @
CSV fajl ima problem sa List separatorom kada se otvara u Excelu. Ako je racunar podesen na US Localization list separator je "," dok kod nas je ";". Excel postuje List separator iz Regional Settings-a cak i za CSV fajl.
[ tkaranovic @ 13.05.2010. 16:40 ] @
Može uz CSV fajl da ide konverter koji će prvo da parsira CVS fajl i zameni separator u taj koji koristi Excel. Recimo može da radi u konzoli:


Code:

program ZaExcelUvozPrvoKonvertovanje;

{$APPTYPE CONSOLE}

uses
  SysUtils;

begin
  try
    writeln('List separator je: ' + SysUtils.ListSeparator);
    writeln('Konvertovanje...');
    //...
    readln;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.

[ dusans @ 13.05.2010. 20:15 ] @
Koristi xml umesto xls-a, ne treba ti nista od office-a na masini da bi proizveo tako nesto
i nije tesko za implementaciju.
http://en.wikipedia.org/wiki/Microsoft_Office_XML_formats

Pozdrav!