다음과 같이 코드 코드를 복사합니다.
var
i,j,m,n,count1:정수;
문자열:문자열;
Jdate:tdatetime;
채널 목록,potBstrtime,potEstrtime,J채널 이름:문자열;
Rres:부울;
JSHR:더블;
Excelid,achart1,cell1,cell2,cell3,cell4,cellMiddle,Range1,Range2,series1:variant;
ExRowsValue,ExRowsName,ExClos:Integer;
이미지페이지,데이터페이지:정수;
leftPostion,topPostion,widthPostion,heightPostion:integer;
시작하다
//OLE 객체 생성
노력하다
Excelid:=CreateOleObject( 'Excel.Application' );
제외하고
on Exception do raise 예외.Create('Xls 파일을 생성할 수 없습니다. EXCEL이 설치되어 있는지 확인하십시오.')
끝;
Excelid.Visible := false; //엑셀 표시 설정
Excelid.WorkBooks.Add; //새 엑셀 파일 생성
//엑셀의 이전 페이지를 사용하지 않음
Excelid.worksheets.add;
dataPage:=Excelid.Worksheets.count; //데이터 페이지로 사용됩니다.
Excelid.worksheets.add;
ImagePage:=Excelid.Worksheets.count;
//showmessage(inttostr(dataPage));
//showmessage(inttostr(ImagePage)+'sdfg');
Jdate:=DateTimePicker1.Date;
개수1:=0;
ExRowsValue:=1; //저장소 값
ExRowsName:=2; //저장소 이름
//주파수 번호를 얻습니다.
i:=0에서 CheckListBoxFQ.Items.Count-1로 수행
시작하다
CheckListBoxFQ.Checked[i]이면
시작하다
채널 목록:= QCaky.FChannelList[i]+','+채널 목록;
끝;
끝;
delete(채널 목록, 길이(채널 목록),1);
leftPostion:=20;
topPostion:=50;
widthPostion:=450;
heightPostion:=230;
i:=0에서 CheckListBoxPOTT.Items.Count-1로 수행
시작하다
CheckListBoxPOTT.Checked[i]이면
시작하다
//Excel 페이지 번호를 동적으로 생성합니다.
//Excelid.worksheets.add;
//시트카운트:=시트카운트+1;
//Excelid.worksheets[sheetCount].name:='차트 페이지'+inttostr(sheetCount);
//여기서 차트를 생성합니다.
CheckListBoxPOTT.Items[i]='하루 종일'이면
시작하다
potBstrtime:='';
potEstrtime:='';
끝
또 다른
시작하다
potBstrtime:=QCaky.FPOTbeginList[i];
potEstrtime:=QCaky.FPOTendList[i];
끝;
Rres:=QCaky.getFQShr(Jdate,FormMain.QAreacode,channellist,potBstrtime,potEstrtime); //점유율 가져오기
ExClos:=1;
QCaky.FADOQueryFQ.Eof가 아닌 동안
시작하다
Excelid.worksheets[dataPage].활성화;
Jchannelname:=QCaky.FADOQueryFQ.fieldbyname('채널 이름').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;
끝;
{(왼쪽, 위쪽, 너비, 높이)를 나타내는 2차원 이미지(20,50,450,230)를 추가}
//achart1 := Excelid.worksheets[ImagePage].chartobjects.add(20,50,450,230);
achart1 := Excelid.worksheets[ImagePage].chartobjects.add(leftPostion,topPostion,widthPostion,heightPostion);
achart1.chart.charttype := xl3DPie; //어떤 종류의 차트가 생성되는지 ******** 파이 차트입니다.
//x축, 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] //차트 카테고리 좌표축(x축)의 값 영역을 설정합니다.
Range2 := Excelid.worksheets[dataPage].Range[cell3, cell4] //차트 수치좌표축(y축)의 값 영역을 설정합니다.
series1:= achart1.chart.seriescollection;
//series1.add(Range2,xlColumns,false); //y축 데이터 설정
series1.add (Range2,true); //원형 차트를 생성하는 데 사용할 수 있습니다.
achart1.chart.seriescollection[1].name:='nihao';
//원형 차트 형식 설정
achart1.chart.seriescollection[1].ApplyDataLabels(xlDataLabelsShowLabelAndPercent,true,true,true);
achart1.Chart.Axes[xlCategory].CategoryNames := Range1; //x축 데이터 설정;
//series1.add(Range2,xlColumns,false); //y축 데이터 설정
//achart1.Chart.Axes[xlCategory].CategoryNames := Range1 //x축 데이터 설정;
//오른쪽 제목 삭제
achart1.Chart.Legend.delete;
//차트 제목 추가
achart1.Chart.HasTitle:=참;
achart1.Chart.ChartTitle.Characters.Text:='평점 차트';
achart1.Chart.HasLegend:=true;
achart1.Chart.Legend.Position := xlBottom;
//차트 왼쪽 첨자 설명
//achart1.Chart.Axes(xlValue,xlPrimary).HasTitle := True;
//achart1.Chart.Axes(xlValue,xlPrimary).AxisTitle.Characters.Text := '등급(%)';
//차트 첨자 설명
//achart1.Chart.Axes(xlCategory,xlPrimary).HasTitle:=True;
//achart1.Chart.Axes(xlCategory,xlPrimary).AxisTitle.Characters.Text:='시간';
ExRowsName:=ExRowsName+2;
ExRowsValue:=ExRowsValue+2;
end; //기간 설정을 선택한 경우
leftPostion:=20;
topPostion:=topPostion+600;
//showmessage(inttostr(dataPage));
끝;
Excelid.Visible := 참;
끝;