Sauvegarder un fichier xls sans passer par ole

Soyez le premier à donner votre avis sur cette source.

Snippet vu 10 810 fois - Téléchargée 28 fois

Contenu du snippet

Ce code n'est pas de moi mais je pense qu'il peut interresser plus d'un donc je le met ici pour que tout le monde puisse le trouver facilement.
Il suffit de faire appel a la fonction pour Enregistrer en XLS.
Désolé si c'est pas commenté.

Source: http://phidels.com/php/forum/forum.php3?forumtable=posts&mode=showpost&postid=108036

PS. Si quelqu'un à une source pour lire un XLS, suis pas contre perso

Source / Exemple :


procedure TMain.XlsWriteCellLabel(XlsStream: TStream; const ACol, ARow: Word;
  const AValue: string);
var
  L: Word;
const
  {$J+}
  CXlsLabel: array[0..5] of Word = ($204, 0, 0, 0, 0, 0);
  {$J-}
begin
  L := Length(AValue);
  CXlsLabel[1] := 8 + L;
  CXlsLabel[2] := ARow;
  CXlsLabel[3] := ACol;
  CXlsLabel[5] := L;
  XlsStream.WriteBuffer(CXlsLabel, SizeOf(CXlsLabel));
  XlsStream.WriteBuffer(Pointer(AValue)^, L);
end;

function TMain.SaveAsExcelFile(AGrid: TStringGrid; AFileName: string): Boolean;
const
  {$J+} CXlsBof: array[0..5] of Word = ($809, 8, 00, $10, 0, 0); {$J-}
  CXlsEof: array[0..1] of Word = ($0A, 00);
var
  FStream: TFileStream;
  I, J: Integer;
begin
  Result := False;
  FStream := TFileStream.Create(PChar(AFileName), fmCreate or fmOpenWrite);
  try
    CXlsBof[4] := 0;
    FStream.WriteBuffer(CXlsBof, SizeOf(CXlsBof));
    for i := 0 to AGrid.ColCount - 1 do
      for j := 0 to AGrid.RowCount - 1 do
        XlsWriteCellLabel(FStream, I, J, AGrid.cells[i, j]);
    FStream.WriteBuffer(CXlsEof, SizeOf(CXlsEof));
    Result := True;
  finally
    FStream.Free;
  end;
end;

Conclusion :


Fonction Suivante pour faire marcher:

SaveAsExcelFile(StringGrid1,FileName);

StringGrid1 est un TStringGrid, votre tableau quoi
FileName est un String, le chemin + nom de votre fichier (ex. c:\test.xls)

A voir également

Ajouter un commentaire

Commentaires

Messages postés
250
Date d'inscription
lundi 9 novembre 2009
Statut
Membre
Dernière intervention
4 septembre 2020

Oui, mais comment sauver la StringGrid dans une autre page que dans la page 1???
Messages postés
1
Date d'inscription
mercredi 17 mars 2004
Statut
Membre
Dernière intervention
19 décembre 2006

je ne dit pas le contraire mais si ca peux empecher plusieurs heures de recherche car les 3/4 des produits sont payant, autant simplifier la recherche de code source pour les personnes qui n'ont pas ses heures de recherche justement devant eux.

Google, c'est tres bien mais si personne ne publie les sources "rares" et gratuite, google n'ira pas tres loin ;)
Messages postés
400
Date d'inscription
samedi 6 août 2005
Statut
Membre
Dernière intervention
11 février 2016
1
Laissons à phidels ce qui est à phidels, à developpez.com ce qui est à developpez.com, et à delphifr ce qui est à delphifr.

Si google est là c'est pour nous permettre de chercher ;).

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.