Moyen rapide pour charger feuille de calcul Excel

Je suis en utilisant ce code pour charger une feuille de calcul excel contenant uniquement des chiffres. Mais il prend trop de temps à charger tout le fichier dans un stringgrid, quelqu'un connait un moyen plus rapide de faire cela?

procedure sh1(SheetIndex:integer);
Var
Xlapp1, Sheet:Variant ;
MaxRow, MaxCol,X, Y:integer ;
str:string;
begin
Str:=trim(form2.OpenDialog1.FileName);

XLApp1 := createoleobject('excel.application');
XLApp1.Workbooks.open(Str) ;

Sheet := XLApp1.WorkSheets[SheetIndex] ;

MaxRow := Sheet.Usedrange.EntireRow.count ;
MaxCol := sheet.Usedrange.EntireColumn.count;

form2.stringgrid1.RowCount:=maxRow+1;
form2.StringGrid1.ColCount:=maxCol+1;
for x:=1 to maxCol do
     for y:=1 to maxRow do
            form2.stringgrid1.Cells[x,y]:=sheet.cells.item[y,x].value;

XLApp1.Workbooks.close;
end;

procedure TForm2.Button1Click(Sender: TObject);
begin
if opendialog1.Execute then begin
    stringgrid1.Visible:=true;
    sh1(1);
    end;
end;
  • Je l'utilise pour ouvrir .xlsx, est-il un moyen de le faire sans exiger la 3e partie des composants.
  • car il semble y avoir quelques "libre" des composants pour la manutention excel sur delphi.
  • Mais est-il un composant, il vaut vraiment la peine de l'aide? Car avec cette feuille de calcul que j'aimerais exploiter avec beaucoup de choses, tracer des graphiques, des algorithmes, etc.
  • Cela semble être un autre de ces "je veux un composant libre" des questions. Vous n'avez pas dit dans la question que vous vouliez qu'il soit libre. Mais vous le faites dans les commentaires. L'analyse d'une .fichier xlsx est délicate. Vous n'allez pas obtenir le code dans une SORTE de réponse. De sorte que vous pouvez certainement faire de la recherche sur le web en tant que bien que nous le pouvons. A votre recherche sur le web donnent aucun résultat.
  • De toute façon, et de loin, la solution la plus simple serait de fixer votre code COM de sorte qu'il a travaillé rapidement. Ne pas démarrer une nouvelle instance de microsoft Excel à chaque fois. Démarrer une fois et ré-utiliser. Cesser d'utiliser la liaison tardive, qui va vraiment piquer les performances. Et ne tirez pas sur les cellules une à une. Tirez sur l'ensemble de la gamme dans un tableau de type variant. Ensuite, vous code de la mouche.
  • Définir la stringgrid pour être visible seulement après avoir lu dans les données. Pour gagner quelques millisecondes.

InformationsquelleAutor Ammadeux | 2013-02-12