Public oExcel, oBook, oSheet
#Define xlColumnClustered 51
#Define xlColumns 2
#Define xlAutoFill 4 CloseAll OpenDatabase (Home(2) + "\TASTRADE\DATA\Tastrade") Use Customer In 0 Select 0 Use"Sales Summary"Alias Sommaire SelectSubstr(Sommaire.exp_1,1,4) As entetes From Sommaire GroupBy entetes IntoCursor entetes
oExcel = Createobject("Excel.Application")
oExcel.Visible = .T.
oBook = oExcel.Workbooks.Add()
oSheet = oBook.activesheet
transpose('entetes') && Faire un pivotage de la table pour obtenir les entetes
createExcelChart('tbl_transformed','Sommaires') && Commencer à créer la charte - Parametres : Table et titre
Function createExcelChart(lcAlias,lcSheetname) With oSheet
.Range("A2").Value = "January"
.Range("A2:A13").DataSeries(xlColumns, xlAutoFill, 1, 1) Endwith With oSheet
.Name = lcSheetname && Inscrire le nom de la feuille à partir du parametre
nfieldno=Afields(arrfielda,lcAlias) Select &lcAlias
nrow=1 Scan For N=2 To nfieldno
cfield=lcAlias+'.'+arrfielda(N,1)
.Cells(nrow,N).Value=(&cfield) Endfor
.Cells(nrow,1).Select
nrow=nrow+1 Endscan
.Columns("A:A").EntireColumn.AutoFit
CurrentColumn = "A"
CurrentYear = "X" Select Sommaire Scan If CurrentYear <> Left(Sommaire.exp_1, 4)
CurrentYear = Left(Sommaire.exp_1, 4)
CurrentColumn = Chr(Asc(CurrentColumn) + 1)
.Range(CurrentColumn + "1").Value = CurrentYear Endif
CurrentRow = Alltrim(Str(Val(Right(Sommaire.exp_1, 2)) + 1))
.Range(CurrentColumn + CurrentRow).Value = Sommaire.sum_unit_price Endscan For i = 1 ToAsc(CurrentColumn) - 63
.Columns[i].ColumnWidth = 12 Next i ENDWITH
Select (lcMyTable)
lcColsToTrans=Afields(laFields) ScanForRecno()<=254
lnTransCol=Recno() For lnCounter = 1 To lcColsToTrans
lcVar="Var"+Transform(lnCounter)
&lcVar=Evaluate(laFields(lnCounter,1)) Endfor
Select tbl_transformed
For lnCounter2 = 1 To lcColsToTrans Go lnCounter2
lcVar="Var"+Transform(lnCounter2) Replace (Field(lnTransCol+1)) WithTransform(&lcVar) Endfor Endscan Select tbl_transformed For lnCounter = 1 To lcColsToTrans Go lnCounter Replace (Field(1)) With (laFields(lnCounter,1)) Endfor GoTop SetTalk &lctalk Endproc
Local oExcel,oSheet Private oBook && Besoin d'être Private pour pouvoir l'utiliser dans la fonction sinon on perd le scope. Close Data OpenDatabaseHOME(2) + "\TASTRADE\DATA\Tastrade"&& Ouvrir le base de données Use CUSTOMER SharedAgainIn 0 *****Créer un curseur des records requis*********** Select company_name As Compagnie,contact_name As Contact,Address As Adresse,;
City As Ville,Region,Postal_code As Postale,Country As Pays From CUSTOMER Where Country = "France"IntoCursor result1 ***************************************************
oExcel = Createobject("Excel.Application") && Créer un instance d'Excel
oBook = oExcel.Workbooks.Add() && Ajouter un WorkBook
oSheet = oBook.ActiveSheet && Selectionner la feuille active
createExcel("Mes Clients","result1") && Faire appel à la fonction qui mettre les records sur la feuille active
oExcel.Visible =.T.&& Montrer Excel
Function createExcel(lcSheetname,lcAlias) With oBook
.Sheets(1).Select&& S'assurer que la première feuille est active With .ActiveSheet
.Name = lcSheetname && Inscrire le nom de la feuille à partir du parametre
nfieldno=Afields(arrfielda,lcAlias) && Assez générique que on peut utiliser n'importe quel curseur. For N=1 To nfieldno && Ajouter les titres des champs pour chaque colonnes
.Cells(1,N).Value=arrfielda(N,1) Endfor
nrow=2 Select &lcAlias && Sélectionner notre curseur Scan For N=1 To nfieldno
cfield=lcAlias+'.'+arrfielda(N,1)
.Cells(nrow,N).Value=(&cfield) Endfor
.Cells(nrow,1).Select
nrow=nrow+1 Endscan
nValue = 65 For N=1 To nfieldno
cColumn = Chr(nValue)
.Columns(Transform(cColumn)+':'+Transform(cColumn)).EntireColumn.AutoFit
.Columns(Transform(cColumn)+':'+Transform(cColumn)).Select
.Columns(Transform(cColumn)+':'+Transform(cColumn)).HorizontalAlignment = xlCenter
.Columns(Transform(cColumn)+':'+Transform(cColumn)).VerticalAlignment = xlBottom
.Columns(Transform(cColumn)+':'+Transform(cColumn)).WrapText = .F.
.Columns(Transform(cColumn)+':'+Transform(cColumn)).Orientation = 0
.Columns(Transform(cColumn)+':'+Transform(cColumn)).AddIndent = .F.
.Columns(Transform(cColumn)+':'+Transform(cColumn)).IndentLevel = 0
.Columns(Transform(cColumn)+':'+Transform(cColumn)).ShrinkToFit = .F.
.Columns(Transform(cColumn)+':'+Transform(cColumn)).ReadingOrder = xlContext
.Columns(Transform(cColumn)+':'+Transform(cColumn)).MergeCells = .F.
nValue = nValue + 1 Endfor
.Cells.Select Endwith Endwith Endfunc
Commentaires
le 24/02/2008, DoumDoum58 a écrit : Ces exemples m'ont été très utiles pour mon dernier développement. Merci
le 03/07/2009, TIEKEN a écrit : slt merci pour ces exemples qui m'ont beaucoup aide. j'aimerais savoir comment ouvrir un document PDF enregistrer dans un champ général d'une table dans adobe par exemple? merci d'avance.
Ces exemples m'ont été très utiles pour mon dernier développement.
Merci