Jump to content
Delphi_852

Exportar Excel

Recommended Posts

Delphi_852

Boa Tarde,

Alguem tem alguma sugestão de como exportar dados para excel sem que seja necessário ter o excel instalado?

Share this post


Link to post
Share on other sites
nunopicado

Podes guardar os dados em formato CSV.

O Excel abre-os sem problema, e como é um simples ficheiro de texto, não tens que ter nada instalado.

Ou precisavas mesmo formato XLS?

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
nunopicado

Esta unit consegue criar nativamente ficheiros XLS (formato BIFF5, Excel 5.0 possivelmente).

http://blog.runbits.com/post/Native-Export-XLS-without-excel-Delphi.aspx

Embora abra na mesma o ficheiro, dá um erro que possivelmente será por não estar preparada para UniCode.

Podes tentar usar como base para fazeres o que precisas. Com alguns ajustes deve dar para ficar UniCode (e até podes nem precisar, dependendo da tua versão do Delphi).

Fora isso, há componentes comerciais que servem para isso, mas não sei se te interessam esses. ;)

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Delphi_852

Estou a usar o Delphi 2010.

Obrigada vou dar uma vista de olhos sobre a sua solução.

Edited by Delphi_852

Share this post


Link to post
Share on other sites
nunopicado

Entretanto testei e o erro que me dava não é problema da unit, até porque já está preparada para unicode.

Testei a função que vem na unit para converter um dataset em xls, e funcionou bem.

Caso te dê algum erro, experimenta olhar para essa função para veres uma demo do funcionamento.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Delphi_852

Ja testei a solução.

Está funcional, excepto quanto o limite 65535 é atingido... como dou volta a isto?

Share this post


Link to post
Share on other sites
nunopicado

Ja testei a solução.

Está funcional, excepto quanto o limite 65535 é atingido... como dou volta a isto?

65535 o quê? Colunas, linhas?

Se é isso, verifica na unit todas as variáveis Word, e muda-as para LongWord por exemplo.

EDIT:

Esquece, não adianta. Parece que é essa versão do ficheiro XLS que não suporta mais do que isso. Mesmo mudando a variável para LongWord, já podes meter valores mais altos nas linhas e colunas, mas depois a abrir o ficheiro no Excel não aparece nada acima de 65536.

Precisavas mais do que isso?

Edited by nunopicado

"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Delphi_852

Precisava, posso vir a ter caso em que o numero de linhas seja superior a esse valor.

Uma solução que me lembrei era criar uma nova folha, só não sei como o fazer

Share this post


Link to post
Share on other sites
nunopicado

Creio que nessa versão não dava para abrir novas folhas. Essa funcionalidade apareceu mais tarde no excel.

Encontrei aqui um site que fala do assunto:

http://thundaxsoftware.blogspot.pt/2010/10/working-with-microsoft-excel-xlsx-files.html

Aparentemente é possível criar XLSx, que já não têm aquela e outras limitações, visto ser o formato mais actual.

Mas a falta de documentação pode ser um problema para aprender a usar isso.

Basicamente diz-te como criar uma unit no Delphi a partir das proprias libs do excel (tens de o ter instalado na máquina onde fazes esta importação, mas depois já não é preciso para o uso do teu programa).


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Delphi_852

Também não tenho o excel instalado no meu pc de desenvolvimento!

Vou verificar esta solução...

Share this post


Link to post
Share on other sites
Delphi_852

Entrei este link.. http://stackoverflow.com/questions/2493071/exporting-to-excel-from-delphi-without-having-excel

Acha esta solução viavél?

"I believe it's possible to create MS Office documents as HTML. You don't need to open them in a web browser then or anything, the file can still have the extension .xls and open in Excel like normal.

I just created a new spreadsheet and stuck the numbers 1-3 in the first three cells of column A, and saved it as HTML. There was a bunch of extra mess that probably isn't all necessary. I stripped out as much as I could, here's what looks to be the bare minimum to produce a working spreadsheet.

Try creating a new text file with this as its contents, and save it with a .xls extension. ......"

Share this post


Link to post
Share on other sites
nunopicado

Viável, depende...

Apesar desse user indicar para guardar o ficheiro com extensão XLS, é facto que não é um XLS, é apenas uma forma de obrigar a que seja o excel a abrir o HTML.

Continua a ser um ficheiro HTML.

Assim sendo, não preenche o requisito que tinhas dito inicialmente, de ter mesmo de ser formato XLS.

Não fosse esse impedimento, e podias usar directamente CSV, que abre directo no excel sem recorrer a "artimanhas", e que para o Delphi não passa de um ficheiro de texto, pelo que não pode haver mais simples.


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites
Delphi_852

Então sendo assim, não dá...

Poderia dar-me um exemplo de como usar o CSV, sff, já agora posso ver como se faz

Share this post


Link to post
Share on other sites
nunopicado

Para o CSV basta gravar strings num ficheiro de texto.

Cada string é uma linha no excel, e o caracter ; separa as colunas.

Por exemplo, o código seguinte:

var
  lst: TStringList;
begin
  lst := TStringList.Create;
  try
     lst.Add('nunopicado;5508;M');
     lst.Add('Delphi_852;8;M');
     lst.SaveToFile('teste.csv');
  finally
     lst.Free;
  end;
end.

criava um ficheiro csv com 2 linhas e 3 colunas.

nunopicado;5508;M
Delphi_852;8;M

Nos componentes JEDI há um para lidar directamente com CSV, ficando a manipulação destes ficheiros igual a lidar com um dataset de bases de dados

NOTA:

Nos casos onde o texto a incluir numa determinada coluna poder ele próprio ter o caracter ';', para que não baralhe o excel pensando que é uma nova coluna ao encontrar esse caracter, deve-se meter o valor entre aspas.

Por exemplo, queremos criar um ficheiro com 3 colunas:

Coluna 1: Fruta

Coluna 2: Laranjas; Maçãs

Coluna 3: Mercado

Se fizessemos assim:

Fruta;Laranças; Maçãs;Mercado

Isto para o excel seriam 4 colunas.

Mas se fizermos assim:

Fruta;"Laranças; Maçãs";Mercado

Assim o excel já reconhece apenas 3 colunas, como é suposto


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.