Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

calcio

Contar Linhas do Excel

Recommended Posts

Minha aplicação lê um arquivo .csv via excel e pega as linhas e grava em uma tabela. Até aí tudo bem, porém no meu loop está um valor fixo.Preciso saber de uma maneira de contar quantas linhas preenchidas esse Excel tem. Se ñ me engano uso o ExcelApplication.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz algo do tipo:

 

procedure TForm1.BitBtn1Click(Sender: TObject);var	excel, excelSheet: Variant;	linhas: integer;beginexcel:=CreateOleObject('Excel.Application');try	excel.WorkBooks.Open('c:\teste.xls',0,True); //Entre aspas coloca onde esta o xls	excelSheet:=excel.Workbooks[1].WorkSheets['plan1']; //Entre aspas coloca o nome da planilha a contar as linhas	linhas:=excelSheet.Cells.SpecialCells(11).Row;	excel.Quitexcept	linhas:=0;	excel.Quit	end;ShowMessage(IntToStr(linhas));end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara da erro nos comandos

 

excelSheet:=excel.Workbooks[1].WorkSheets['plan1']; //Entre aspas coloca o nome da planilha a contar as linhas

linhas:=excelSheet.Cells.SpecialCells(11).Row;

 

se eu Fizer

excel.Workbooks[1].WorkSheets['plan1']; //Entre aspas coloca o nome da planilha a contar as linhas

Linhas:=excelSheet.Cells.SpecialCells(11).Row;

 

Aí da erro na última linha.

 

oq pode ser?

 

Veja como astá meu código:

ExcelApplication1.Visible[Id_User] := False;  // torna a aplicação visível  ExcelApplication1.DisplayAlerts[Id_User] := False; // remove alertas do excel  // Esta linha conecta a aplicação com o arquivo.  // OBS - Vale apena ver o nº de parametros e suas funcionalidades.  Con_Excel := ExcelApplication1.Workbooks.Open(EdCaminho.Text,  EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam,  EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, EmptyParam, Id_User);  // conecta a planilha manipular os dados  ExcelWorksheet1.ConnectTo(Con_Excel.Worksheets[1] as _Worksheet);  //ativa a planilha conectada  ExcelWorksheet1.Activate(Id_User);  //  //TotalLinhas := 35000;  Plan := ExcelApplication1.Workbooks[1].Worksheets['plan1'];  TotalLinhas := ExcelWorksheet1.Cells.SpecialCells(11).Row;  ///41297;....

Compartilhar este post


Link para o post
Compartilhar em outros sites

Era bobeira, a variavel q criei ñ era do tipo variant...depois parou de dar o erro do DeBUG. Agora quando rodo o prog da o erro.Exception class EOLE Exception With mesage 'Indice inválido'.Suspeitei do nome da planilha do CSV mas alterei para Plan1 como no exemplo + continua dando errovou verificar denovo o nome

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ignore a outra MSG. Descobri q no arquivo CSV o nome da planílha assume o nome do arquivo...como pode ver eu peego o arquivo via campo txt. EdCaminho.TextComo faria pra Pegar só o nome do arquivo, ignorando o caminho e a extenção.Em PHP eu saberia fazer usaria o Mid ou o str_pos mas no delphi ñ sei como se faz. pode me dar essa ajuda?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Marcio pode me dar + um help. rsFiz oq falouNomePlan := ChangeFileExt(ExtractFileName(EdCaminho.Text),'');//ShowMessage(NomePlan);Plan := ExcelApplication1.Workbooks[1].Worksheets[NomePlan];TotalLinhas := Plan.Cells.SpecialCells(11).Row;No ShowMessage ele mostra Bonitinho o nome mas quando jogo pra função ele da errotentei das seguintes maneiras..Plan := ExcelApplication1.Workbooks[1].Worksheets[NomePlan];Plan := ExcelApplication1.Workbooks[1].Worksheets['+NomePlan+'];Plan := ExcelApplication1.Workbooks[1].Worksheets['NomePlan'];Aí da o erro de 'Indice inválido'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto éPlan := ExcelApplication1.Workbooks[1].Worksheets[NomePlan];No caso se no showMessage ele mostra certinho, depois ele não tem como mudar, visto que não tem nenhuma alteração para isto...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.