Copie o código do código da seguinte forma:
var
i,j,m,n,contagem1:inteiro;
string:string;
Jdata:tdatahora;
lista de canais,potBstrtime,potEstrtime,Jnomedocanal:string;
Rres:booleano;
JSHR:duplo;
Excelid,chart1,célula1,célula2,célula3,célula4,célulaMiddle,Intervalo1,Intervalo2,série1:variante;
ExRowsValue,ExRowsName,ExClos:Integer;
ImagePage,dataPage:inteiro;
posição esquerda, posição superior, posição largura, posição altura: inteiro;
começar
//Cria objeto OLE
tentar
Excelid:=CreateOleObject( 'Excel.Application' );
exceto
na exceção, aumente a exceção.Create('Não foi possível criar o arquivo Xls, confirme se o EXCEL está instalado')
fim;
Excelid.Visible := false; //Configurações de exibição do Excel
Excelid.WorkBooks.Add; //Gerar um novo arquivo Excel
//Não use as páginas anteriores do Excel
Excelid.planilhas.add;
dataPage:=Excelid.Worksheets.count; //Usado como página de dados
Excelid.planilhas.add;
ImagePage:=Excelid.Worksheets.count;
//showmessage(inttostr(dataPage));
//showmessage(inttostr(ImagePage)+'sdfg');
Jdate:=DateTimePicker1.Date;
contagem1:=0;
ExRowsValue:=1; //Valor de armazenamento
ExRowsName:=2; //Nome do armazenamento
//Obtém o número da frequência
para i:=0 para CheckListBoxFQ.Items.Count-1 faça
começar
se CheckListBoxFQ.Checked[i] então
começar
lista de canais:= QCaky.FChannelList[i]+','+lista de canais;
fim;
fim;
delete(listadecanais,comprimento(listadecanais),1);
posição esquerda:=20;
posição superior:=50;
larguraPosição:=450;
alturaPosição:=230;
para i:=0 para CheckListBoxPOTT.Items.Count-1 faça
começar
se CheckListBoxPOTT.Checked[i] então
começar
//Gera dinamicamente o número da página do Excel
//Excelid.worksheets.add;
//contagem de planilhas:=contagem de planilhas+1;
//Excelid.worksheets[sheetCount].name:='Página do gráfico'+inttostr(sheetCount);
//Gera gráfico aqui
if CheckListBoxPOTT.Items[i]='O dia todo' então
começar
potBstrtime:='';
potEstrtime:='';
fim
outro
começar
potBstrtime:=QCaky.FPOTbeginList[i];
potEstrtime:=QCaky.FPOTendList[i];
fim;
Rres:=QCaky.getFQShr(Jdate,FormMain.QAreacode,channellist,potBstrtime,potEstrtime);
ExClos:=1;
enquanto não QCaky.FADOQueryFQ.Eof faça
começar
Excelid.worksheets[dataPage].Ativar;
Jnomedocanal:=QCaky.FADOQueryFQ.fieldbyname('nomedocanal').AsString;
JSHR:=QCaky.FADOQueryFQ.fieldbyname('allshr').AsFloat;
Excelid.worksheets[dataPage].Cells[ExRowsName,ExClos].Valor :=Jnomedocanal;
Excelid.worksheets[dataPage].Cells[ExRowsValue,ExClos].Value :=JSHR;
inc(ExClos);
QCaky.FADOQueryFQ.Next;
fim;
{Adicione uma imagem bidimensional (20,50,450,230) para representar (esquerda, topo, largura, altura)}
//achart1 := Excelid.worksheets[ImagePage].chartobjects.add(20,50,450,230);
achart1 := Excelid.worksheets[ImagePage].chartobjects.add(leftPostion,topPostion,widthPostion,heightPostion);
achart1.chart.charttype := xl3DPie; //Que tipo de gráfico é gerado ******** Aqui está um gráfico de pizza.
//Definir dados do eixo x e do eixo y
célula1 := Excelid.worksheets[dataPage].Cells[ExRowsName,1];
célula2 := Excelid.worksheets[dataPage].Cells[ExRowsName,ExClos];
célula3 := Excelid.worksheets[dataPage].Cells[ExRowsValue,1];
célula4 := Excelid.worksheets[dataPage].Cells[ExRowsValue,ExClos];
Range1 := Excelid.worksheets[dataPage].Range[cell1, cell2] //Definir a área de valor do eixo de coordenadas da categoria do gráfico (eixo x);
Range2 := Excelid.worksheets[dataPage].Range[cell3, cell4] //Definir a área de valor do eixo de coordenadas numéricas do gráfico (eixo y);
série1:= achart1.chart.seriescollection;
//series1.add (Range2,xlColumns,false); //Definir os dados do eixo y;
series1.add (Range2,true); //Pode ser usado para gerar gráficos de pizza
achart1.chart.seriescollection[1].name:='nihao';
//Define o formato do gráfico de pizza
achart1.chart.seriescollection[1].ApplyDataLabels(xlDataLabelsShowLabelAndPercent,true,true,true);
achart1.Chart.Axes[xlCategory].CategoryNames := Range1; //Definir dados do eixo x
//series1.add (Range2,xlColumns,false); //Definir os dados do eixo y;
//achart1.Chart.Axes[xlCategory].CategoryNames := Range1; //Definir dados do eixo x;
//Exclui o título à direita
achart1.Chart.Legend.delete;
//Adiciona o título do gráfico
achart1.Chart.HasTitle:=Verdadeiro;
achart1.Chart.ChartTitle.Characters.Text:='Gráfico de classificações';
achart1.Chart.HasLegend:=true;
achart1.Chart.Legend.Position := xlBottom;
//Descrição do subscrito à esquerda do gráfico
//achart1.Chart.Axes(xlValue,xlPrimary).HasTitle := True;
//achart1.Chart.Axes(xlValue,xlPrimary).AxisTitle.Characters.Text := 'Classificação (%)';
//Descrição do subscrito do gráfico
//achart1.Chart.Axes(xlCategory,xlPrimary).HasTitle:=True;
//achart1.Chart.Axes(xlCategory,xlPrimary).AxisTitle.Characters.Text:='time';
ExRowsName:=ExRowsName+2;
ExRowsValue:=ExRowsValue+2;
end; //Se a configuração do período for selecionada
posição esquerda:=20;
posição superior:=posição superior+600;
//showmessage(inttostr(dataPage));
fim;
Excelid.Visible := verdadeiro;
fim;