呃,在网上搜了很久,但是还是比较糊涂,这里要请教各位大侠好几个问题:
我现在已经能把从串口读到的数据处理好后填写在excel对应的单元格里,
但是如果我还想用这些数据生成对应的折线图
根据网上的解释,是先创建一个chart
achart := sheet.chartobjects.add(60,80,300,300);
achart.chart.charttype := xlLineMarkers;
第一想问的是想要 数据点折线图 的话 上面这句是写xlLineMarkers呢 还是 $00000041 还是直接就是 41呢?
接下来我希望得到一个区域的数据比如下面
时间 温度
14:05 22.1250
14:11 22.3125
这样的格式,但是对于 网上的解释:
4)给二维图赋值
series:=achart.chart.seriescollection;
range:=sheet1!r2c3:r3c9;
//这里很是不明白,难道是row2 to row3,column3 to column 9吗?
//而且在sheet1!这里总是编译不能通过@_@
series.add(range,true);
第二主要想问的就是 怎样来确定我想要的数据范围呢?先多谢各位了\(^_^)/
我现在已经能把从串口读到的数据处理好后填写在excel对应的单元格里,
但是如果我还想用这些数据生成对应的折线图
根据网上的解释,是先创建一个chart
achart := sheet.chartobjects.add(60,80,300,300);
achart.chart.charttype := xlLineMarkers;
第一想问的是想要 数据点折线图 的话 上面这句是写xlLineMarkers呢 还是 $00000041 还是直接就是 41呢?
接下来我希望得到一个区域的数据比如下面
时间 温度
14:05 22.1250
14:11 22.3125
这样的格式,但是对于 网上的解释:
4)给二维图赋值
series:=achart.chart.seriescollection;
range:=sheet1!r2c3:r3c9;
//这里很是不明白,难道是row2 to row3,column3 to column 9吗?
//而且在sheet1!这里总是编译不能通过@_@
series.add(range,true);
第二主要想问的就是 怎样来确定我想要的数据范围呢?先多谢各位了\(^_^)/
var
iLoop:Integer;
begin
inherited;
with adoq_chart do
begin
Close;
SQL.Clear;
if Trim(cx_order.Text)='' then
begin
if Trim(cx_pn.Text)='' then
SQL.Add('Select * from PRO_QUANTITY where Dt between '''+ DateToStr(cx_start.Date)+''' and '''+ DateToStr(cx_end.Date)+'''')
else
SQL.Add('Select * from PRO_QUANTITY where Dt between '''+ DateToStr(cx_start.Date)+''' and '''+ DateToStr(cx_end.Date)+''' and Model='''+ cx_order.Text+''' and PN='''+ cx_pn.Text+'''');
end
else
begin
SQL.Add('Select * from PRO_QUANTITY where Dt between '''+ DateToStr(cx_start.Date)+''' and '''+ DateToStr(cx_end.Date)+''' and Model='''+ cx_order.Text+'''');
end;
Open;
First;
BarSeries1.Clear;
for iLoop:=0 to RecordCount -1 do
begin
BarSeries1.Add(FieldValues['NewHR'],VarToStr(FieldValues['Dt']));
Next;
end;
end;
end;
>_<unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Excel2000, OleServer, StdCtrls;type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
ExcelApplication1: TExcelApplication;
ExcelQueryTable1: TExcelQueryTable;
ExcelWorkbook1: TExcelWorkbook;
ExcelOLEObject1: TExcelOLEObject;
ExcelWorksheet1: TExcelWorksheet;
Button1: TButton;
CheckBox1: TCheckBox;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
v:Variant;
Sheet: Variant;
achart : Variant;
asheet : Variant;
range : Variant;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
uses Comobj;procedure TForm1.Button1Click(Sender: TObject);
begin
try
v:= CreateOleObject('Excel.Application');
v.visible := true;
//v.visible := CheckBox1.checked;
v.workbooks.add;
v.workbooks[1].worksheets[1].name := 'demo';
sheet := v.workbooks[1].worksheets[1];
// sheet := v.workbooks.open('F:\excel\Demo2.xls');
// sheet.WorkSheets[2].Activate;
sheet.worksheets[1].name := 'demo'; sheet.WorkSheets[1].cells[1,2]:='A';
sheet.WorkSheets[1].cells[1,3]:='B';
sheet.WorkSheets[1].cells[1,4]:='C';
sheet.WorkSheets[1].cells[2,1]:='P1';
sheet.WorkSheets[1].cells[2,2]:='10';
sheet.WorkSheets[1].cells[2,3]:='20';
sheet.worksheets[1].cells[2,4]:='30';
sheet.WorkSheets[1].cells[3,1]:='P2';
sheet.WorkSheets[1].cells[3,2]:='20';
sheet.WorkSheets[1].cells[3,3]:='15';
sheet.worksheets[1].cells[3,4]:='25';
sheet.WorkSheets[1].cells[4,1]:='P3';
sheet.WorkSheets[1].cells[4,2]:='15';
sheet.WorkSheets[1].cells[4,3]:='25';
sheet.worksheets[1].cells[4,4]:='35'; sheet.chartObjects.add(10,60,500,280);
sheet.chartObject[1].activate;
sheet.chartObject[1].chart.charttype := xlLine; range := ///这里就很不明白怎么写了~~~ except
showmessage('fail,check your excel and try again.');
v.displayalerts := false;
v.quit;
exit;
end;
application.Restore;
application.BringToFront;
end;end.