Copiez le code comme suit :
var
i,j,m,n,count1:entier ;
str:chaîne;
Jdate:tdateheure;
liste de chaînes, potBstrtime, potEstrtime, Jchannelname:string ;
Rres:booléen;
JSHR : double ;
Excelid,achart1,cell1,cell2,cell3,cell4,cellMiddle,Range1,Range2,series1:variante ;
ExRowsValue, ExRowsName, ExClos : Integer ;
ImagePage,dataPage:entier;
leftPostion,topPostion,widthPostion,heightPostion:entier ;
commencer
//Créer un objet OLE
essayer
Excelid:=CreateOleObject( 'Excel.Application' );
sauf
en cas d'exception, déclenchez une exception.Create('Impossible de créer le fichier Xls, veuillez confirmer si EXCEL est installé')
fin;
Excelid.Visible := false; //Paramètres d'affichage Excel
Excelid.WorkBooks.Add; //Générer un nouveau fichier Excel
//Ne pas utiliser les pages précédentes d'Excel
Excelid.worksheets.add ;
dataPage:=Excelid.Worksheets.count; //Utilisé comme page de données
Excelid.worksheets.add ;
ImagePage:=Excelid.Worksheets.count;
//showmessage(inttostr(dataPage));
//showmessage(inttostr(ImagePage)+'sdfg');
Jdate:=DateTimePicker1.Date;
compte1 :=0 ;
ExRowsValue :=1 ; //Valeur de stockage
ExRowsName :=2 ; //Nom du stockage
//Obtenir le numéro de fréquence
pour i:=0 à CheckListBoxFQ.Items.Count-1 faire
commencer
si CheckListBoxFQ.Checked[i] alors
commencer
liste de chaînes := QCaky.FChannelList[i]+','+liste de chaînes ;
fin;
fin;
delete (liste de chaînes, longueur (liste de chaînes), 1);
Position gauche :=20 ;
position supérieure :=50 ;
largeurPostion :=450 ;
hauteurPostion :=230 ;
pour i:=0 à CheckListBoxPOTT.Items.Count-1 faire
commencer
si CheckListBoxPOTT.Checked[i] alors
commencer
// Générer dynamiquement un numéro de page Excel
//Excelid.worksheets.add;
//sheetCount:=sheetCount+1;
//Excelid.worksheets[sheetCount].name:='Page de graphique'+inttostr(sheetCount);
//Générer un graphique ici
si CheckListBoxPOTT.Items[i]='Toute la journée' alors
commencer
potBstrtime:='';
potEstrtime:='';
fin
autre
commencer
potBstrtime:=QCaky.FPOTbeginList[i];
potEstrtime:=QCaky.FPOTendList[i];
fin;
Rres:=QCaky.getFQShr(Jdate,FormMain.QAreacode,channellist,potBstrtime,potEstrtime);
ExClos :=1 ;
alors que ce n'est pas QCaky.FADOQueryFQ.Eof
commencer
Excelid.worksheets[dataPage].Activate ;
Jchannelname:=QCaky.FADOQueryFQ.fieldbyname('channelname').AsString;
JSHR:=QCaky.FADOQueryFQ.fieldbyname('allshr').AsFloat;
Excelid.worksheets[dataPage].Cells[ExRowsName,ExClos].Value :=Jchannelname;
Excelid.worksheets[dataPage].Cells[ExRowsValue,ExClos].Value :=JSHR;
inc(ExClos);
QCaky.FADOQueryFQ.Next ;
fin;
{Ajouter une image bidimensionnelle (20,50,450,230) à représenter (gauche, haut, largeur, hauteur)}
//achart1 := Excelid.worksheets[ImagePage].chartobjects.add(20,50,450,230);
achart1 := Excelid.worksheets[ImagePage].chartobjects.add(leftPostion,topPostion,widthPostion,heightPostion);
achart1.chart.charttype := xl3DPie; //Quel type de graphique est généré ******** Voici un diagramme circulaire.
//Définir les données des axes X et Y
cell1 := Excelid.worksheets[dataPage].Cells[ExRowsName,1];
cell2 := Excelid.worksheets[dataPage].Cells[ExRowsName,ExClos];
cell3 := Excelid.worksheets[dataPage].Cells[ExRowsValue,1];
cell4 := Excelid.worksheets[dataPage].Cells[ExRowsValue,ExClos];
Range1 := Excelid.worksheets[dataPage].Range[cell1, cell2]; //Définit la zone de valeur de l'axe de coordonnées de la catégorie Graphique (axe des x)
Range2 := Excelid.worksheets[dataPage].Range[cell3, cell4]; //Définit la zone de valeur de l'axe de coordonnées numériques du graphique (axe y)
series1:= achart1.chart.seriescollection;
//series1.add (Range2,xlColumns,false); //Définir les données de l'axe y
series1.add (Range2,true); //Peut être utilisé pour générer des diagrammes circulaires
achart1.chart.seriescollection[1].name:='nihao';
//Définit le format du diagramme circulaire
achart1.chart.seriescollection[1].ApplyDataLabels(xlDataLabelsShowLabelAndPercent,true,true,true);
achart1.Chart.Axes[xlCategory].CategoryNames := Range1; //Définir les données de l'axe X
//series1.add (Range2,xlColumns,false); //Définir les données de l'axe y
//achart1.Chart.Axes[xlCategory].CategoryNames := Range1; //Définir les données de l'axe X
// Supprime le titre à droite
achart1.Chart.Legend.delete;
//Ajouter le titre du graphique
achart1.Chart.HasTitle:=True;
achart1.Chart.ChartTitle.Characters.Text:='Tableau des notes';
achart1.Chart.HasLegend:=true;
achart1.Chart.Legend.Position := xlBottom;
//Description de l'indice gauche du graphique
//achart1.Chart.Axes(xlValue,xlPrimary).HasTitle := True;
//achart1.Chart.Axes(xlValue,xlPrimary).AxisTitle.Characters.Text := 'Note (%)';
//Description de l'indice du graphique
//achart1.Chart.Axes(xlCategory,xlPrimary).HasTitle:=True;
//achart1.Chart.Axes(xlCategory,xlPrimary).AxisTitle.Characters.Text:='time';
ExRowsName:=ExRowsName+2;
ExRowsValue :=ExRowsValue+2 ;
end; //Si le paramètre de période est sélectionné
Position gauche :=20 ;
topPostion:=topPostion+600;
//showmessage(inttostr(dataPage));
fin;
Excelid.Visible := true;
fin;