Delphi_852 Posted January 15, 2016 at 04:07 PM Report Share #592025 Posted January 15, 2016 at 04:07 PM Boa Tarde, Alguem tem alguma sugestão de como exportar dados para excel sem que seja necessário ter o excel instalado? Link to comment Share on other sites More sharing options...
nunopicado Posted January 15, 2016 at 04:17 PM Report Share #592028 Posted January 15, 2016 at 04:17 PM (edited) 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 January 15, 2016 at 04:18 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 15, 2016 at 04:34 PM Author Report Share #592031 Posted January 15, 2016 at 04:34 PM Precisava mesmo no formato XLS... Link to comment Share on other sites More sharing options...
nunopicado Posted January 15, 2016 at 05:16 PM Report Share #592032 Posted January 15, 2016 at 05:16 PM (edited) 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 January 15, 2016 at 05:17 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 15, 2016 at 05:23 PM Author Report Share #592033 Posted January 15, 2016 at 05:23 PM (edited) Estou a usar o Delphi 2010. Obrigada vou dar uma vista de olhos sobre a sua solução. Edited January 15, 2016 at 05:23 PM by Delphi_852 Link to comment Share on other sites More sharing options...
nunopicado Posted January 15, 2016 at 05:40 PM Report Share #592035 Posted January 15, 2016 at 05:40 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 15, 2016 at 05:48 PM Author Report Share #592036 Posted January 15, 2016 at 05:48 PM Ja testei a solução. Está funcional, excepto quanto o limite 65535 é atingido... como dou volta a isto? Link to comment Share on other sites More sharing options...
nunopicado Posted January 15, 2016 at 05:58 PM Report Share #592038 Posted January 15, 2016 at 05:58 PM (edited) 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 January 15, 2016 at 05:59 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 15, 2016 at 06:02 PM Author Report Share #592040 Posted January 15, 2016 at 06:02 PM 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 Link to comment Share on other sites More sharing options...
nunopicado Posted January 15, 2016 at 06:15 PM Report Share #592041 Posted January 15, 2016 at 06:15 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 22, 2016 at 03:38 PM Author Report Share #592330 Posted January 22, 2016 at 03:38 PM Também não tenho o excel instalado no meu pc de desenvolvimento! Vou verificar esta solução... Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 22, 2016 at 04:33 PM Author Report Share #592340 Posted January 22, 2016 at 04:33 PM 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. ......" Link to comment Share on other sites More sharing options...
nunopicado Posted January 22, 2016 at 05:31 PM Report Share #592345 Posted January 22, 2016 at 05:31 PM 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. Link to comment Share on other sites More sharing options...
Delphi_852 Posted January 22, 2016 at 05:52 PM Author Report Share #592349 Posted January 22, 2016 at 05:52 PM 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 Link to comment Share on other sites More sharing options...
nunopicado Posted January 22, 2016 at 06:32 PM Report Share #592353 Posted January 22, 2016 at 06:32 PM 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. Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now