MSFLEXGRID E EXCEL
Galera, gostaria de obter o método mais rápido possÃvel para transferir os dados do MsGlexGrid para o Excel. Já utilizo o carregamento célula a célua, mas aà fica ruim a performance ao carregar os dados pro Excel. Alguém conhece um mais rápido??
Suponho que vc esteja preenchendo seu grid a partir de uma tabela(recordset). O Recordset possui um método muito pouco explorado pelos programadores, mas extremamente útil: o método GetString.
Ele contém TODOS os valores do recordset em um texto delimitando as colunas e linhas por caracteres especiais(Chr(10) para as colunas e Chr(13) para as linhas). Imagine que vc abriu um recordset com uma seleção de produtos, com colunas de [Ô]Código, Descrição e Valor[Ô], coisa simples. Todos os dados vão estar assim:
1|Sapato|45,90*
2|Camisa|19,90*
3|Meia|4,50*
(onde o [Ô]|[Ô] representa o chr(10) e o [Ô]*[Ô] representa o chr(13)
Com isso, vc pode simplesmente fazer assim:
Dim Texto as string
Texto = SeuRecordset.GetString()
Texto = Replace(Texto,chr(10), [Ô];[Ô])
Isso vai gerar algo assim:
1;Sapato;45,90*
2;Camisa;19,90*
3;Meia;4,50*
Ou seja, um csv, que pode ser importado pelo excel muito fácil...
Ele contém TODOS os valores do recordset em um texto delimitando as colunas e linhas por caracteres especiais(Chr(10) para as colunas e Chr(13) para as linhas). Imagine que vc abriu um recordset com uma seleção de produtos, com colunas de [Ô]Código, Descrição e Valor[Ô], coisa simples. Todos os dados vão estar assim:
1|Sapato|45,90*
2|Camisa|19,90*
3|Meia|4,50*
(onde o [Ô]|[Ô] representa o chr(10) e o [Ô]*[Ô] representa o chr(13)
Com isso, vc pode simplesmente fazer assim:
Dim Texto as string
Texto = SeuRecordset.GetString()
Texto = Replace(Texto,chr(10), [Ô];[Ô])
Isso vai gerar algo assim:
1;Sapato;45,90*
2;Camisa;19,90*
3;Meia;4,50*
Ou seja, um csv, que pode ser importado pelo excel muito fácil...
Então KERPLUNK, esse método eu já até estou usando pra fazer o carregamento do grid. Tranquilo. Mas aÃ, ocorre que se eu ja tenho o grid preenchido não tem por que eu ir ao banco de dados pegar a informação. Daà de eu estar tentando aqui passar do grid pro Excel. Aliás já até passo. Mas preciso melhorar o carregamento. Estou fazendo uns testes aqui com Clipboard.
Amigo, vc pode criar uma propriedade no seu form que vai [Ô]guardar[Ô] o recordset e fazer à partir dele ao invés de abrir o recordset novamente ou buscar dados de um componente gráfico, ambas operações bem pesadas.
Tópico encerrado , respostas não são mais permitidas