Bonjour à tous,
Je me demandais s'il était possible de convertir directement dans le code des fichiers .csv en .xls sans que ce soit visible pour l'utilisteur. Je souhaite garder la mise à forme du .csv.
Merci d'avance pour votre aide.
Isa
Version imprimable
Bonjour à tous,
Je me demandais s'il était possible de convertir directement dans le code des fichiers .csv en .xls sans que ce soit visible pour l'utilisteur. Je souhaite garder la mise à forme du .csv.
Merci d'avance pour votre aide.
Isa
Oui, c'est possible. Essaie le code suivant :
Bon, y'a aussi du code de gestion d'une ProgressBar, mais ça t'indiquera où mettre un tel code... ;-)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 procedure TMainForm.SaveAsXLS(const FileName: String); Var CSV : String ; _Excel : TExcelApplication ; begin _Excel:=Nil; Try // C'est un fichier CSV que l'on sauve, tout d'abord... CSV:=ExpandFileName(ChangeFileExt(FileName,feTMP)); Try SaveAsCSV(CSV) ; Except DeleteFile(CSV); Raise; End; Progress.Position:=0; Progress.Max:=3; // On efface à la main, sinon Excel demande la confirmation. If FileExists(FileName) Then DeleteFile(FileName); // Création du serveur Excel. _Excel:=TExcelApplication.Create(Nil); // Ouverture du serveur Excel. ShowStatus(ssOpeningExcel); _Excel.Connect; Progress.StepIt; // Ouverture du .CSV ShowStatus(ssOpeningCSV); _Excel.Workbooks.OpenText(CSV,xlWindows,1,xlDelimited,xlTextQualifierDoubleQuote,False,False,True,False,False,False,EmptyParam,EmptyParam,EmptyParam,1036); Progress.StepIt; // Sauvegarde en .XLS ShowStatus(ssSavingXLS); _Excel.Workbooks.Get_Item(1).SaveAs(ExpandFileName(FileName),OleVariant(xlWorkbookNormal),EmptyParam,EmptyParam,False,False,xlNoChange,xlUserResolution,False,EmptyParam,EmptyParam,1036); Progress.StepIt; Finally // Fermeture du serveur Excel. ShowStatus(ssShutingDownExcel); If Assigned(_Excel) Then Try _Excel.Quit; _Excel.Disconnect; Finally FreeAndNil(_Excel); End; Progress.StepIt; ShowStatus(EmptyStr); DeleteFile(CSV); End; end;
Cette fonction sauve un CSV de manière "temporaire", puis le convertit en XLS avant d'effacer le CSV (devenu inutile).
Par contre, il n'y a pas de mise en page dans un CSV...
Heuu....
Question idiote: il sort d'ou le????Citation:
SaveAsCSV(CSV)
Comme le, c'est quoi?Citation:
feTMP
J'ai pas tout compris je crois
Je suis vraiment trop nulle
:cry:
Du reste du programme. Ca va sauver les données courantes au format CSV.Citation:
Envoyé par Isa31
Une chaîne de ressource : "feTMP" pour "File Extension : TMP".Citation:
Envoyé par Isa31
Le code n'est pas à copier/coller directement, voyons, c'est un extrait "brut de fonderie" de mon propre programme... Tu dois te focaliser sur la variable _Excel et le séquencement d'appel de ses méthodes.Citation:
Envoyé par Isa31
Pleure pas, va, t'es pas nulle, c'est juste une question d'habitude et d'expérience.Citation:
Envoyé par Isa31
Demande si tu as des soucis avec ce code, OK ?
Ok merci beaucoup, ca marche!!!!
:merci: