Copie el código de código de la siguiente manera:
var
i,j,m,n,cuenta1:entero;
cadena:cadena;
Jdate:tdatetime;
lista de canales,potBstrtime,potEstrtime,Jchannelname:cadena;
Rres:booleano;
JSHR:doble;
Excelid,achart1,cell1,cell2,cell3,cell4,cellMiddle,Range1,Range2,series1:variante;
ExRowsValue, ExRowsName, ExClos:Entero;
Página de imagen, página de datos: entero;
posiciónizquierda,posiciónsuperior,posiciónancho,posiciónaltura:integer;
comenzar
//Crear objeto OLE
intentar
Excelid:=CreateOleObject('Excel.Aplicación');
excepto
en caso de excepción, genere excepción.Create('No se puede crear el archivo Xls, confirme si EXCEL está instalado')
fin;
Excelid.Visible := false; //Configuración de visualización de Excel
Excelid.WorkBooks.Add; //Generar un nuevo archivo de Excel
//No utilices las páginas anteriores de Excel.
Excelid.worksheets.add;
dataPage:=Excelid.Worksheets.count; //Utilizado como página de datos
Excelid.worksheets.add;
ImagePage:=Excelid.Worksheets.count;
//showmessage(inttostr(dataPage));
//showmessage(inttostr(ImagePage)+'sdfg');
Jdate:=DateTimePicker1.Date;
cuenta1:=0;
ExRowsValue:=1; //Valor de almacenamiento
ExRowsName:=2; //Nombre de almacenamiento
//Obtener número de frecuencia
para i:=0 a CheckListBoxFQ.Items.Count-1 hacer
comenzar
si CheckListBoxFQ.Checked[i] entonces
comenzar
lista de canales:= QCaky.FChannelList[i]+','+lista de canales;
fin;
fin;
eliminar (lista de canales, longitud (lista de canales), 1);
posiciónizquierda:=20;
posición superior:=50;
posiciónancho:=450;
posiciónaltura:=230;
para i:=0 a CheckListBoxPOTT.Items.Count-1 hacer
comenzar
si CheckListBoxPOTT.Checked[i] entonces
comenzar
//Generar dinámicamente el número de página de Excel
//Excelid.worksheets.add;
//hojaCount:=hojaCount+1;
//Excelid.worksheets[sheetCount].name:='Página de gráfico'+inttostr(sheetCount);
//Generar gráfico aquí
si CheckListBoxPOTT.Items[i]='Todo el día' entonces
comenzar
potBstrtime:='';
potEstrtime:='';
fin
demás
comenzar
potBstrtime:=QCaky.FPOTbeginList[i];
potEstrtime:=QCaky.FPOTendList[i];
fin;
Rres:=QCaky.getFQShr(Jdate,FormMain.QAreacode,channellist,potBstrtime,potEstrtime //Obtener ocupación);
CierreEx:=1;
mientras que QCaky.FADOQueryFQ.Eof no lo hace
comenzar
Excelid.worksheets[página de datos].Activar;
Jchannelname:=QCaky.FADOQueryFQ.fieldbyname('nombre del canal').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.Siguiente;
fin;
{Agregue una imagen bidimensional (20,50,450,230) para representar (izquierda, arriba, ancho, alto)}
//achart1 := Excelid.worksheets[ImagePage].chartobjects.add(20,50,450,230);
achart1 := Excelid.worksheets[ImagePage].chartobjects.add(leftPostion,topPostion,widthPostion,heightPostion);
achart1.chart.charttype := xl3DPie; //Qué tipo de gráfico se genera ******** Aquí hay un gráfico circular.
//Establecer datos del eje x y del eje y
celda1 := Excelid.worksheets[dataPage].Cells[ExRowsName,1];
celda2 := Excelid.worksheets[dataPage].Cells[ExRowsName,ExClos];
celda3 := Excelid.worksheets[dataPage].Cells[ExRowsValue,1];
celda4: = Excelid.worksheets[dataPage].Cells[ExRowsValue,ExClos];
Range1 := Excelid.worksheets[dataPage].Range[cell1, cell2] //Establece el área de valor del eje de coordenadas de la categoría del gráfico (eje x)
Range2 := Excelid.worksheets[dataPage].Range[cell3, cell4] //Establece el área de valores del eje de coordenadas numéricas del gráfico (eje y)
serie1:= achart1.chart.seriescollection;
//series1.add (Range2,xlColumns,false); //Establece los datos del eje y
series1.add (Range2,true); //Se puede utilizar para generar gráficos circulares.
achart1.chart.seriescollection[1].name:='nihao';
//Establece el formato del gráfico circular
achart1.chart.seriescollection[1].ApplyDataLabels(xlDataLabelsShowLabelAndPercent,true,true,true);
achart1.Chart.Axes[xlCategory].CategoryNames := Range1 //Establecer datos del eje x
//series1.add (Range2,xlColumns,false); //Establece los datos del eje y
//achart1.Chart.Axes[xlCategory].CategoryNames := Range1 //Establecer datos del eje x
//Elimina el título de la derecha
achart1.Chart.Legend.delete;
//Agregar título del gráfico
achart1.Chart.HasTitle:=Verdadero;
achart1.Chart.ChartTitle.Characters.Text:='Gráfico de calificaciones';
achart1.Chart.HasLegend:=verdadero;
achart1.Chart.Legend.Position := xlBottom;
//Descripción del subíndice izquierdo del gráfico
//achart1.Chart.Axes(xlValue,xlPrimary).HasTitle := Verdadero;
//achart1.Chart.Axes(xlValue,xlPrimary).AxisTitle.Characters.Text := 'Calificación (%)';
//Descripción del subíndice del gráfico
//achart1.Chart.Axes(xlCategory,xlPrimary).HasTitle:=True;
//achart1.Chart.Axes(xlCategory,xlPrimary).AxisTitle.Characters.Text:='tiempo';
ExRowsName:=ExRowsName+2;
ExRowsValue:=ExRowsValue+2;
end; //Si se selecciona la configuración del período
posiciónizquierda:=20;
posición superior:=posición superior+600;
//showmessage(inttostr(dataPage));
fin;
Excelid.Visible: = verdadero;
fin;