Jump to content

Archived

This topic is now archived and is closed to further replies.

vagsousa

Abrir e escrever arquivo .xls com C#

Recommended Posts

Olá,eu já consigo exportar um datagrid para uma planilha do excel. Porém preciso abrir uma planilha já existente para gravar em células específicas.Alguém sabe como fazer?Abraços!

Share this post


Link to post
Share on other sites

Você faz a exportação por automação ou simplesmente cria um arquivo texto tabulado (ou separado por vírgulas)? Se for o primeiro caso, você já tem a base para fazer o que quer (se não me engano, o objeto WorkBooks tem um método Open para você abrir uma pasta de trabalho, e você pode utilizar o método Range para referir-se a uma determinada célula).Abraços,Graymalkin

Share this post


Link to post
Share on other sites

Olá Graymalkin,

Você faz a exportação por automação ou simplesmente cria um arquivo texto tabulado (ou separado por vírgulas)?

Não utilizo arquivo texto. Quero exportar diretamente de um datagrid para o arquivo .xls

Se for o primeiro caso, você já tem a base para fazer o que quer (se não me engano, o objeto WorkBooks tem um método Open para você abrir uma pasta de trabalho, e você pode utilizar o método Range para referir-se a uma determinada célula).

Para utilizar o WorkBooks preciso adicionar alguma referência ao meu projeto?Aproveitando, pode ser que alguém saiba, existe alguma maneira de exportar figuras (.jpg, .jpeg, .bmp, ...) para o excel ou para o word? Procurei muito mas não achei nada...Abraços!

Share this post


Link to post
Share on other sites

Não utilizo arquivo texto. Quero exportar diretamente de um datagrid para o arquivo .xls

Como assim "quero"? Antes você disse:

eu já consigo exportar um datagrid para uma planilha do excel.

Você consegue ou não, afinal?

Para utilizar o WorkBooks preciso adicionar alguma referência ao meu projeto?

Na opção "Add Reference..." do menu "Project", na aba "COM", você vai ter o "Microsoft Excel xx.x Object Library", onde "xx.x" é a versão do Excel instalada. O bom de fazer isso é que você terá os objetos, os métodos e as propriedades mostradas no Visual Studio (quando você pressionar o "." depois de um objeto ele vai listar os métodos do mesmo). O ruim é que o seu programa vai ser dependente da versão do Excel marcada (se for o caso de você executar em outro computador). Para estes casos existe a possibilidade de criar um objeto do Excel em tempo de execução, só que isso não é nada muito bonito de se fazer em C# (nisso o VB.NET dá um show no quesito simplicidade). Com isso não existe a dependência e desde que a versão instalada suporte os métodos chamados, vai funcionar com qualquer versão.

Aproveitando, pode ser que alguém saiba, existe alguma maneira de exportar figuras (.jpg, .jpeg, .bmp, ...) para o excel ou para o word? Procurei muito mas não achei nada...

Você pode gravar uma macro no Excel ou no Word, inserindo uma figura na planilha ou no documento, e depois olhar o código-fonte da macro no editor do VBA (ALT+F11). Vai ser praticamente este código que você utilizará com a automação, bastando adaptar para o C#.Abraços,Graymalkin

Share this post


Link to post
Share on other sites

Olá,

 

eu consegui fazer a escrita de dados em uma célula específica:

 

Excel.Range excelCell = (Excel.Range)excelWorksheet.get_Range("F16", "F16");

excelCell.Value2 = valor;

 

 

Agora, exportar figura tá complicado. Vou explicar:

 

Estou tentando exportar uma figura que "não existe fisicamente", ou seja, não é um arquivo existente no disco com extensão .jpg, .bmp, etc. Esta figura é na verdade um gráfico que é criado dinamicamente (System.Web.UI.WebControls.Image).

 

Exportar figuras que existem fisicamente eu já fiz:

[Exemplo C# / Word]

WordApp.Selection.InlineShapes.AddPicture( nome_do_arquivo, ref linkToFile, ref saveWithDocument, ref missing );

 

Mas a figura que eu tenho não dá para exportar desta maneira...

 

Alguém tem alguma idéia de como fazer isso?!

 

Abraços!

Share this post


Link to post
Share on other sites

Por que você não salva a figura em disco (existe um método para isso; "Save" se não me engano) e depois faz o procedimento que você citou? Talvez seja possível também copiar a imagem para a área de transferência e colar no documento/planilha.Abraços,Graymalkin

Share this post


Link to post
Share on other sites

Por que você não salva a figura em disco (existe um método para isso; "Save" se não me engano) e depois faz o procedimento que você citou?

O método "Save" pertence a classe abstrata System.Drawing.Image. Preciso primeiro transformar o meu gráfico de System.Web.UI.WebControls.Image ou System.Web.UI.HtmlControls.HtmlImage para que consiga gravar usando o "Save".Tentei encontrar alguma solução, mas sem sucesso...

Talvez seja possível também copiar a imagem para a área de transferência e colar no documento/planilha.

Para copiar para a área de tranferência é preciso que o usuário o faça (botão direito do mouse, CTRL+C) e isso não será possível (são dezenas de gráficos que deverão ser exportados para gerar um relatório...).´Vou continuar buscando aqui e caso consiga, com certeza, postarei aqui para o pessoal.Ah, não deixem de mandar sugestões! São sempre bem-vindas!Abraços!

Share this post


Link to post
Share on other sites

Você pode dar um exemplo de como você cria uma imagem dinamicamente com a referida classe?Abraços,Graymalkin

Share this post


Link to post
Share on other sites

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.