procedure TFormCharts.BtnToExcellClick(Sender: TObject);
Var I,s,rs:integer;
SourceSeries:TLIneSeries;
MWB: TsWorkbook;
MWS,MWS1,MWS2,MWS3,MWS4,MWS5,MWS6,MWS7,MWS8,MWS9: TsWorksheet;
ch,ch1,ch2,ch3,ch4,ch5,ch6,ch7,ch8,ch9: TsChart;
cser,cser1,cser2,cser3,cser4,cser5,cser6,cser7,cser8,cser9: TsLineSeries;
begin
MWB := TsWorkbook.Create;
rs:=0;
// MWB.SetDefaultFont('Calibri', 12);
// MWB.Options := MWB.Options + [boCalcBeforeSaving,boEntireDocument];
For s:=0 to Chart1.SeriesCount-1 do begin
SourceSeries:=TLineSeries(ChartListbox1.Series[s]);
if( SourceSeries.Count > 0) then begin
case s of
0: begin
MWS := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS.WriteText(0, 1, 'Axe X');
MWS.WriteText(0, 2, 'Axe Y');
ch := MWS.AddChart( 200, 100,4, 4);
ch.Title.Caption := 'Datas '+inttostr(s+1);
ch.Title.Font.Style := [fssBold];
ch.Title.Font.Color := scBlue;
ch.StackMode := csmStacked;
cser:= TsLineSeries.Create(ch);
end;
1: begin
MWS1:= MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS1.WriteText(0, 1, 'Axe X');
MWS1.WriteText(0, 2, 'Axe Y');
ch1 := MWS1.AddChart( 200, 200,4, 4);
ch1.Title.Caption := 'Datas '+inttostr(s+1);
ch1.Title.Font.Style := [fssBold];
ch1.Title.Font.Color := scBlue;
cser1:= TsLineSeries.Create(ch1);
end;
2: begin
MWS2 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS2.WriteText(0, 1, 'Axe X');
MWS2.WriteText(0, 2, 'Axe Y');
ch2 := MWS2.AddChart( 200, 200,4, 4);
ch2.Title.Caption := 'Datas '+inttostr(s+1);
ch2.Title.Font.Style := [fssBold];
ch2.Title.Font.Color := scBlue;
cser2:= TsLineSeries.Create(ch2);
end;
3: begin
MWS3 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS3.WriteText(0, 1, 'Axe X');
MWS3.WriteText(0, 2, 'Axe Y');
ch3 := MWS3.AddChart( 200, 200,4, 4);
ch3.Title.Caption := 'Datas '+inttostr(s+1);
ch3.Title.Font.Style := [fssBold];
ch3.Title.Font.Color := scBlue;
cser3:= TsLineSeries.Create(ch3);
end;
4: begin
MWS4 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS4.WriteText(0, 1, 'Axe X');
MWS4.WriteText(0, 2, 'Axe Y');
ch4 := MWS4.AddChart( 200, 200,4, 4);
ch4.Title.Caption := 'Datas '+inttostr(s+1);
ch4.Title.Font.Style := [fssBold];
ch4.Title.Font.Color := scBlue;
cser4:= TsLineSeries.Create(ch4);
end;
5: begin
MWS5 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS5.WriteText(0, 1, 'Axe X');
MWS5.WriteText(0, 2, 'Axe Y');
ch5 := MWS5.AddChart( 200, 200,4, 4);
ch5.Title.Caption := 'Datas '+inttostr(s+1);
ch5.Title.Font.Style := [fssBold];
ch5.Title.Font.Color := scBlue;
cser5:= TsLineSeries.Create(ch5);
end;
6: begin
MWS6 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS6.WriteText(0, 1, 'Axe X');
MWS6.WriteText(0, 2, 'Axe Y');
ch6 := MWS6.AddChart( 200, 200,4, 4);
ch6.Title.Caption := 'Datas '+inttostr(s+1);
ch6.Title.Font.Style := [fssBold];
ch6.Title.Font.Color := scBlue;
cser6:= TsLineSeries.Create(ch6);
end;
7: begin
MWS7 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS7.WriteText(0, 1, 'Axe X');
MWS7.WriteText(0, 2, 'Axe Y');
ch7 := MWS7.AddChart( 200, 200,4, 4);
ch7.Title.Caption := 'Datas '+inttostr(s+1);
ch7.Title.Font.Style := [fssBold];
ch7.Title.Font.Color := scBlue;
cser7:= TsLineSeries.Create(ch7);
end;
8: begin
MWS8 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS8.WriteText(0, 1, 'Axe X');
MWS8.WriteText(0, 2, 'Axe Y');
ch8 := MWS8.AddChart(200, 200,4, 4);
ch8.Title.Caption := 'Datas '+inttostr(s+1);
ch8.Title.Font.Style := [fssBold];
ch8.Title.Font.Color := scBlue;
cser8:= TsLineSeries.Create(ch8);
end;
9: begin
MWS9 := MWB.AddWorksheet('Datos '+inttostr(s+1));
MWS9.WriteText(0, 1, 'Axe X');
MWS9.WriteText(0, 2, 'Axe Y');
ch9 := MWS9.AddChart( 200, 200,4, 4);
ch9.Title.Caption := 'Datas '+inttostr(s+1);
ch9.Title.Font.Style := [fssBold];
ch9.Title.Font.Color := scBlue;
cser9:= TsLineSeries.Create(ch9);
end;
end;
ChartDataDb.Filtered:=false;
ChartDataDb.Filter:='serie='+''+inttostr(s)+'';
ChartDataDb.Filtered:=true;
rs:=Round(ChartDataDb.RecordCount/ (FormMAIN.ChartCount+1));
if rs>0 then rs:=(rs*S);
for i := 1 to SourceSeries.Count - 1 do begin
if(ChartDataDb.Locate('serie;id', VarArrayOf([s,(i+rs)]),[loCaseInsensitive,loPartialKey])) then begin
CASE s OF
0: begin MWS.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
1: begin MWS1.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS1.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
2: begin MWS2.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS2.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
3: begin MWS3.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS3.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
4: begin MWS4.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS4.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
5: begin MWS5.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS5.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
6: begin MWS6.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS6.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
7: begin MWS7.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS7.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
8: begin MWS8.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS8.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
9: begin MWS9.WriteNumber(i, 1, ChartDataDb.FieldByName('XValue').AsInteger); // GetXValue(i));
MWS9.WriteNumber(i, 2, ChartDataDb.FieldByName('YValue').AsInteger);
end;
end;
end;
end;
case s of
0: begin
ChartDataDb.First;
ch.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch.YAxis.Min := 0;
ChartDataDb.last;
ch.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch.YAxis.Title.Caption:='Y Axe';
cser.SetTitleAddr(0, 1); // series 1 title in cell A1
cser.SetYRange(2, 2, i+1, 2);
cser.SetXRange(2, 1, i+1, 1);
end;
1: begin
// cser1:= TsLineSeries.Create(ch1);
ChartDataDb.First;
ch1.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch1.YAxis.Min := 0;
ChartDataDb.last;
ch1.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch1.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch1.YAxis.Title.Caption:='Y Axe';
ch1.Title.Font.Style := [fssBold];
ch1.Title.Font.Color := scBlue;
ch.YAxis.Title.Caption:='Y Axe';
cser1.SetTitleAddr(0, 1); // series 1 title in cell A1
cser1.SetYRange(2, 2, i+1, 2);
cser1.SetXRange(1, 2, i+1, 2);
end;
2: begin
// cser2:= TsLineSeries.Create(ch2);
ChartDataDb.First;
ch2.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch2.YAxis.Min := 0;
ChartDataDb.last;
ch2.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch2.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch2.YAxis.Title.Caption:='Y Axe';
cser2.SetTitleAddr(0, 1); // series 1 title in cell A1
cser2.SetYRange(2, 2, i+1, 2);
cser2.SetXRange(1, 2, i+1, 2);
end;
3: begin
// cser3:= TsLineSeries.Create(ch3);
ChartDataDb.First;
ch3.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch3.YAxis.Min := 0;
ChartDataDb.last;
ch3.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch3.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch3.YAxis.Title.Caption:='Y Axe';
cser3.SetTitleAddr(0, 1); // series 1 title in cell A1
cser3.SetYRange(2, 2, i+1, 2);
cser3.SetXRange(1, 2, i+1, 2);
end;
4: begin
// cser4:= TsLineSeries.Create(ch4);
ChartDataDb.First;
ch4.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch4.YAxis.Min := 0;
ChartDataDb.last;
ch4.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch4.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch4.YAxis.Title.Caption:='Y Axe';
cser4.SetTitleAddr(0, 1); // series 1 title in cell A1
cser4.SetYRange(2, 2, i+1, 2);
cser4.SetXRange(1, 2, i+1, 2);
end;
5: begin
// cser5:= TsLineSeries.Create(ch5);
ChartDataDb.First;
ch5.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch5.YAxis.Min := 0;
ChartDataDb.last;
ch5.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch5.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch5.YAxis.Title.Caption:='Y Axe';
cser5.SetTitleAddr(0, 1); // series 1 title in cell A1
cser5.SetYRange(2, 2, i+1, 2);
cser5.SetXRange(1, 2, i+1, 2);
end;
6: begin
// cser6:= TsLineSeries.Create(ch6);
ChartDataDb.First;
ch6.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch6.YAxis.Min := 0;
ChartDataDb.last;
ch6.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch6.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch6.YAxis.Title.Caption:='Y Axe';
cser6.SetTitleAddr(0, 1); // series 1 title in cell A1
cser6.SetYRange(2, 2, i+1, 2);
cser6.SetXRange(1, 2, i+1, 2);
end;
7: begin
// cser7:= TsLineSeries.Create(ch7);
ChartDataDb.First;
ch7.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch7.YAxis.Min := 0;
ChartDataDb.last;
ch7.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch7.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch7.YAxis.Title.Caption:='Y Axe';
cser7.SetTitleAddr(0, 1); // series 1 title in cell A1
cser7.SetYRange(2, 2, i+1, 2);
cser7.SetXRange(1, 2, i+1, 2);
end;
8: begin
// cser8:= TsLineSeries.Create(ch8);
ChartDataDb.First;
ch8.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch8.YAxis.Min := 0;
ChartDataDb.last;
ch8.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch8.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch8.YAxis.Title.Caption:='Y Axe';
cser8.SetTitleAddr(0, 1); // series 1 title in cell A1
cser8.SetYRange(2, 2, i+1, 2);
cser8.SetXRange(1, 2, i+1, 2);
end;
9: begin
// cser9:= TsLineSeries.Create(ch9);
ChartDataDb.First;
ch9.XAxis.Min := ChartDataDb.FieldByName('XValue').AsInteger;
ch9.YAxis.Min := 0;
ChartDataDb.last;
ch9.XAxis.Max :=ChartDataDb.FieldByName('XValue').AsInteger;
ch9.YAxis.Max := ChartDataDb.FieldByName('YValue').AsInteger;
ch9.YAxis.Title.Caption:='Y Axe';
cser9.SetTitleAddr(0, 1); // series 1 title in cell A1
cser9.SetYRange(2, 2, i+1, 2);
cser9.SetXRange(1, 2, i+1, 2);
end;
end;
ChartDataDb.Filtered:=false;
end;
end;
MWB.WriteToFile(GetCurrentDir + '\testfrafica.xlsx', true);
MWB.Free;
end;