Fórum importar/Exportar dados do excel para StrigGrid #236569

07/06/2004

0

-ola pessoal, estou precisando de uma ajudinha simples... ja dei uma pesquisada pelo forum mais nao recebi resposta ainda.
preciso importar/Exportar dados do excel para StrigGrid e salvar as alterações no ´documento.xml´.
-vi diversos exemplos mais nao consegui achar um que pudesse se encaixar no meu problema.

desde ja, grato...
Juliano Gomes (JAPA)


Mahdak

Mahdak

Responder

Posts

08/06/2004

Lucas Silva

Para exportar
uses ComObj;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
var excel: variant;
begin

      excel := CreateOleObject(´Excel.Application´);
      excel.Workbooks.add(1);
      excel.Cells.Select;
      excel.Selection.NumberFormat := ´@´;


      excel.cells[1,1] := StringGrid1.cells[1,1];
      excel.columns.AutoFit;
      excel.cells[1,1].Select;
      excel.visible := true;
end;



para importar
Uses ComObj 

procedure TForm1.Button1Click(Sender: TObject); 
var 
   Excel : Variant; 
   Coluna:Integer; 
   P:string; 
   txt: textfile; 
begin 
   try 
   AssignFile(txt, ´c:\Arquivo.txt´); 
   if not FileExists(´c:\Arquivo.txt´) then 
      Rewrite(txt,´c:\Arquivo.txt´); 
   Append(txt); 
   Excel := CreateOleObject(´Excel.Application´); 
   Excel.WorkBooks.Open(´C:\Pasta1.xls´); 
   Coluna:=1; 
   P:=Excel.WorkBooks[1].Sheets[1].Cells[1,Coluna]; 
   while ( P <> ´´) do 
      begin 
      WriteLn(txt, Excel.WorkBooks[1].Sheets[1].Cells[1,Coluna]); 
      Coluna:=Coluna+1; 
      P:=Excel.WorkBooks[1].Sheets[1].Cells[1,Coluna]; 
      end 
   finally 
   Excel.WorkBooks.Close; 
   CloseFile(txt); 
  end; 
end;



Responder

Gostei + 0

08/06/2004

Mahdak

- ok lucas, mais pelo que pude ver essa rotina importa de um arquivo texto e exporta para um arquivo xml...
- o que eu preciso na verdade é importar um arquivo xml para dentro do StringGrid do meu programa, e exportar o arquivo que está no StringGrid para um arquivo Xml. Tudo isso sem precisar estar abrindo o excel, tudo via meu aplicativo...

Grato pela atenção...
Abraços!


Responder

Gostei + 0

08/06/2004

Mahdak

sobe
-----


Responder

Gostei + 0

09/06/2004

Mahdak

ok lucas, mais pelo que pude ver essa rotina importa de um arquivo texto e exporta para um arquivo xml...
- o que eu preciso na verdade é importar um arquivo xml para dentro do StringGrid do meu programa, e exportar o arquivo que está no StringGrid para um arquivo Xml. Tudo isso sem precisar estar abrindo o excel, tudo via meu aplicativo...

Grato pela atenção...
Abraços!


Responder

Gostei + 0

09/06/2004

Cabelo

Caros Colegas..

Japa..

Pra vc conseguir fazer isso, vc pode fazer o seguinte, ao invés de vc importar para um arquivo, vc pode importar diretamente para seu string grid, colocando assim as linhas e colunas da planilha, igauis aos do string grid..

Outra coisa, alguém poderia me falar se existe uma limitação no número de colunas que possam ser importadas em uma mesma vari-avel , isto é, esta variável tem que tamanho??

sem mais..

Cabelo


Responder

Gostei + 0

09/06/2004

Mahdak

Ok, mas é justamente isso que gostaria de saber como fazer, pois nao sei qual o código para importar para o meu StringGrid, e exportar para o Documento.xml...
é a minha primeira experiencia nesse nivel, e se algem puder me dar um exemploclaro disso, por favor, postem aqui...
Valleu...


Responder

Gostei + 0

09/06/2004

Cabelo

procedure TForm1.Button1Click(Sender: TObject);
var v_caminho : string;
v_excel : OleVariant;
v_i, v_j : integer;
begin
if OpenDialog1.Execute then
begin
v_caminho := OpenDialog1.FileName;
v_excel := CreateOleObject(´Excel.Application´);
v_excel.Visible := False;
v_excel.Application.Workbooks.Open(v_caminho);
v_excel2 := CreateOleObject(´Excel.Application´);
v_excel2.Visible := False;
v_excel2.Application.Workbooks.Open(v_caminho);
v_j := 0;
while not (AnsiUpperCase(v_excel.cells.item[v_j + 1, 1].value) = ´´) do
begin
inc(v_j);
end;
for v_i := 0 to v_j - 1 do
begin
StringGrid1.Cells[1, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,1].Value);
StringGrid1.Cells[2, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,2].Value);
StringGrid1.Cells[3, v_i] :=
AnsiUpperCase(v_excel.ActiveSheet.Cells.Item[v_i + 1,3].Value);
//Fazer isso até o fim das colunas da planilha..
{se precisar percorrer suas colunas, coloque outra vatiável integer, e incremente ela de acordo com as suas colunas, depois disso, dentro deste for, vc faz um outro for passando a outra variável no lugar da coluna..}
end;
unassigned;
MessageDlg(´Importação realizada com sucesso!´, mtconfirmation, [mbOk], 0);
end;
end;

vc deve percorrer toda a sua planilha, para importar os dados..

espero ter ajudado..

sem mais..

Cabelo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar