呃,在网上搜了很久,但是还是比较糊涂,这里要请教各位大侠好几个问题:
我现在已经能把从串口读到的数据处理好后填写在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);  
第二主要想问的就是 怎样来确定我想要的数据范围呢?先多谢各位了\(^_^)/

解决方案 »

  1.   

    直接寫chart不行嗎?將X、Y、Z軸數據寫入,樣式選擇折線圖不就OK了嗎?procedure TPRO_EFFPLATO_F.cx_endPropertiesChange(Sender: TObject);
    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;
      

  2.   

    呃,太谢谢您的回复了,但是我是初学delphi,您这个我还是没有看太明白脑子一下子转不过来了,怎样设置就是不明白我写了一个测试的小程序,还是要很认真很认真地请教各位高手们了:
    >_<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.