次のようにコードをコピーします。
変数
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:整数;
始める
//OLEオブジェクトを作成する
試す
Excelid:=CreateOleObject( 'Excel.Application' );
を除外する
例外の場合、例外を発生させます。Create('Xls ファイルを作成できません。EXCEL がインストールされているかどうかを確認してください')
終わり;
Excelid.Visible := false //Excel の表示設定;
Excelid.WorkBooks.Add; // 新しい Excel ファイルを生成します。
// Excel の前のページは使用しないでください
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; //ストレージ名
//周波数番号を取得
for i:=0 から CheckListBoxFQ.Items.Count-1 まで
始める
If CheckListBoxFQ.Checked[i] then
始める
チャンネルリスト:= QCaky.FChannelList[i]+','+チャンネルリスト;
終わり;
終わり;
delete(チャンネルリスト,長さ(チャンネルリスト),1);
leftPosition:=20;
トップポジション:=50;
widthPostion:=450;
高さ位置:=230;
for i:=0 から CheckListBoxPOTT.Items.Count-1 まで
始める
if CheckListBoxPOTT.Checked[i] then
始める
//Excelのページ番号を動的に生成
//Excelid.worksheets.add;
//シート数:=シート数+1;
//Excelid.worksheets[sheetCount].name:='グラフ ページ'+inttostr(sheetCount);
// ここにチャートを生成します
CheckListBoxPOTT.Items[i]='終日' の場合
始める
PotBstrtime:='';
ポットEstrtime:='';
終わり
それ以外
始める
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].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;
終わり;
{(左、上、幅、高さ)を表す 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:='ニーハオ';
//円グラフの形式を設定します
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:=True;
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:='time';
ExRowsName:=ExRowsName+2;
ExRowsValue:=ExRowsValue+2;
end; //期間設定が選択されている場合
leftPosition:=20;
トップポジション:=トップポジション+600;
//showmessage(inttostr(dataPage));
終わり;
Excelid.Visible := true;
終わり;