Autor Téma: Export do Excelu  (Přečteno 3954 krát)

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Export do Excelu
« kdy: 23-01-2014, 21:33:07 »
Přeji hezký den.

Mám dotaz.

Potřeboval bych poradit s exportem do excelu.

 Hodnota := 0,58

položku Hodnota bych potřeboval vložit do excelu (př: Soubor:  Data.xls   list: položky    buňka:    A:5


Za rady, nebo případné příklady předem moc děkuji.

Milan

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #1 kdy: 23-01-2014, 21:50:42 »
Ještě doplním, že export musí proběhnout bez nainstalovaného Excelu.

  XLApp := CreateOleObject(`Excel.Application`); // takže toto nepřipadá v úvahu

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Export do Excelu
« Odpověď #2 kdy: 23-01-2014, 23:13:01 »
Embarcadero Technology Partner

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #3 kdy: 24-01-2014, 05:10:23 »
Tam se spíše probírala možnost přes CreateOleObject(`Excel.Application`) .
to bych nechtěl.

a zde http://delphi.cz/post/Native-Export-XLS-bez-excel-Delphi.aspx si moc neumím představit, jak bych to použil :-(

Offline Slavomir

  • Mladík
  • **
  • Příspěvků: 51
  • Karma: 0
    • Verze Delphi: XE2
    • RQ Money
Re:Export do Excelu
« Odpověď #4 kdy: 24-01-2014, 07:36:33 »
Používam úspešne komponentu FreeExcelSylk (autor Aleš Pavel).
Lazarus, Delphi - RQ Money

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Export do Excelu
« Odpověď #5 kdy: 24-01-2014, 11:07:41 »
@Slavomir: FreeExcelSylk bohužel umí jen SYLK a ne XLS (AlienStar se ptal přímo na "Soubor:  Data.xls   list: položky").

@AlienStar: Mimo OLE tam máš také odkazy na 4 knihovny, které ti pomohou.
Embarcadero Technology Partner

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #6 kdy: 24-01-2014, 14:22:07 »
nemáte někdo nějaký příklad použití?

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Export do Excelu
« Odpověď #7 kdy: 24-01-2014, 15:49:22 »
nemáte někdo nějaký příklad použití?

Každá z knihoven má určitě nějaké demo.

Pro OExport se dá vyplnit existující XLS dokument těmito dvěma způsoby:

Bez šablony - použije se buňka A5 v listu "položky":
Kód: Delphi [Vybrat]
  1. procedure Export_bez_sablony;
  2. var
  3.   xExport: TOExport;
  4.   xWorkSheet: TExportWorkSheet;
  5.   xCell: TExportCell;
  6. const
  7.   Hodnota = 0.58;
  8. begin
  9.   // bez šablony - použije se buňka A5 //
  10.  
  11.   xExport := TOExport.Create;
  12.   try
  13.     xExport.LoadFromFile('S:\Data.xls');//načti soubor
  14.  
  15.     xWorkSheet := xExport.WorkSheets.Find('položky');//najdi list
  16.     xCell := xWorkSheet.FindCreateCell(0, 4, TExportCellNumber);//najdi, popř. vytvoř buňku - použij číselnou hodnotu
  17.     TExportCellNumber(xCell).Value := Hodnota;//nastav hodnotu buňky
  18.  
  19.     xExport.SaveToFile('S:\Data2.xls', True);//ulož a otevři soubor v defaultní aplikaci
  20.   finally
  21.     xExport.Free;
  22.   end;
  23. end;

Vhodnější způsob s šablonou - do cílové buňky si ulož text "{hodnota}".
Vyplnění je nezávislé na názvu listu a cílové adrese buňky.
Kód: Delphi [Vybrat]
  1. procedure TForm1.Btn2Click(Sender: TObject);
  2. var
  3.   xExportTemplate: TOExportTemplate;
  4.   xWorkSheet: TExportWorkSheet;
  5.   xCell: TExportCell;
  6. const
  7.   Hodnota = 0.58;
  8. begin
  9.   // vhodnější způsob s šablonou - do cílové buňky si ulož text "{hodnota}" //
  10.   // vyplnění je nezávislé na názvu listu a cílové adrese buňky //
  11.  
  12.   xExportTemplate := TOExportTemplate.Create;
  13.   try
  14.     xExportTemplate.Template.LoadFromFile('S:\Data.xls');//načti šablonu
  15.     xExportTemplate.LoadTemplate;//připrav šablonu na zpracování
  16.  
  17.     xExportTemplate.ReplaceSqlValue('{hodnota}', FloatToSqlStr(Hodnota), TExportCellNumber);//nastav hodnotu buňky, funkce FloatToSqlStr() je v FormatSQL.pas
  18.  
  19.     xExportTemplate.FinalizeDocument;//připrav dokument na generování
  20.     xExportTemplate.Document.SaveToFile('S:\Data2.xls', True);//ulož a otevři soubor v defaultní aplikaci
  21.   finally
  22.     xExportTemplate.Free;
  23.   end;
  24. end;


EDIT: Popř. jestli jsem tě špatně pochopil a chceš vytvářet soubor úplně bez šablony:

Kód: Delphi [Vybrat]
  1. procedure TForm1.Btn3Click(Sender: TObject);
  2. var
  3.   xExport: TOExport;
  4.   xWorkSheet: TExportWorkSheet;
  5.   xCell: TExportCell;
  6. const
  7.   Hodnota = 0.58;
  8. begin
  9.   // vytvořit soubor od základu - bez šablony //
  10.  
  11.   xExport := TOExport.Create;
  12.   try
  13.     xWorkSheet := xExport.AddWorkSheet('položky');//vytvoř list
  14.  
  15.     xCell := xWorkSheet.FindCreateCell(0, 4, TExportCellNumber);//vytvoř numerickou buňku A5
  16.     TExportCellNumber(xCell).Value := Hodnota;
  17.  
  18.     xExport.SaveToFile('S:\Data2.xls', True);//ulož soubor a otevři ho v defaultní aplikaci
  19.   finally
  20.     xExport.Free;
  21.   end;
  22. end;
  23.  
« Poslední změna: 24-01-2014, 16:12:50 od oxo »
Embarcadero Technology Partner

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #8 kdy: 24-01-2014, 16:31:29 »
no, to už vypadá docela slušně :-)

bude procedura  OExport  fungovat i na Delphi XE5 Starter ??

díky za příklady (super)


Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Export do Excelu
« Odpověď #9 kdy: 24-01-2014, 19:39:03 »
bude procedura  OExport  fungovat i na Delphi XE5 Starter ??

Já mám zato, že ano. Není důvod proč by nefungovala.
Embarcadero Technology Partner

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #10 kdy: 24-01-2014, 21:03:37 »
Tak jsem zkoušel tu komponentu OExport

a píše mi to , že mu chybí soubor OXmlSeq.dcu  který v balíku vůbec není :-(
nevíte co s tím?

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #11 kdy: 24-01-2014, 21:08:56 »
už jsem na to přišel,, není tam soubor DCU ale zdroják PAS

docela se mi to líbí :-)


existuje ještě něco podobného, včetně zdrojových kódů ??

děkuji

Offline Ondřej Pokorný

  • Guru
  • *****
  • Příspěvků: 815
  • Karma: 59
    • Verze Delphi: Primárně Lazarus, jinak D7 až aktuální
    • Kluug.net
Re:Export do Excelu
« Odpověď #12 kdy: 24-01-2014, 21:38:54 »
existuje ještě něco podobného, včetně zdrojových kódů ??

Ach jo, při vší úctě mám dojem, že někteří lidé sice umí číst, ale z nějakých mně neznámých důvodů na tuto schopnost rezignují. Díky bohu tuto vlastnost pozoruji u všech národností, tak to asi nebude ryze český fenomén.

Ano, existují ještě 3 podobné knihovny (adresy k mání na odkazované stránce fóra výše) a ke všem včetně OExportu je k mání zdrojový kód. Jen se za něj musí zaplatit. Nic zadarmo, co by umělo pokročilé XLS, neznám.
Embarcadero Technology Partner

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #13 kdy: 24-01-2014, 22:08:13 »
jestli to nebude tím, že to není napsané v češtině :-)

Offline TLama

  • Guru
  • *****
  • Příspěvků: 597
  • Karma: 31
    • Verze Delphi: 7, 2009, XE3
Re:Export do Excelu
« Odpověď #14 kdy: 25-01-2014, 12:41:32 »
jestli to nebude tím, že to není napsané v češtině :-)

Mně ten příspěvek stejně jako zbytek vlákna přijde jako psaný v češtině...

Offline AlienStar

  • Plnoletý
  • ***
  • Příspěvků: 101
  • Karma: 2
Re:Export do Excelu
« Odpověď #15 kdy: 25-01-2014, 18:03:35 »
no, moc není  ;)
informace o OExportu jsou EN http://www.kluug.net/xlsx-ods-delphi.php

Já už bych to uzavřel :-)

Každopádně děkuji uživateli Oxo za zdrojový příklad.

Je to přesně co jsem hledal.

díky


Offline Vašek Záruba

  • Nováček
  • *
  • Příspěvků: 38
  • Karma: 0
    • Verze Delphi: D7,XE2
Re:Export do Excelu
« Odpověď #16 kdy: 27-01-2014, 20:07:29 »
Dovolím si ještě jednu odpověď. Koupil jsem si TSM FlexCel a ta investice se mi 100x vrátila. Velmi se osvědčily uživatelsky snadno modifikovatelné výstupní sestavy pomocí template souborů.