这个问题我已经搜索了这个论坛了,似乎没有人提及到这个。
首先,是保存的问题。
我用了ExcelApplication1.SaveAs( 'C:\Excel\Demo1.xls' );(这是我从本网站搜索出的一篇文章中看到的方法)来保存。可是程序提示:[Error] UnitMain.pas(1716): Undeclared identifier: 'SaveAs'
可是如果我用ExcelApplication1.Save('dd.xls');来保存,似乎他在当前目录下保存以后还要再来一个另存为,可是我不愿意让这个另存为对话框出现。我应该怎么作?其次,就是用Delphi在新建的Excel表中画图的问题。陈省先生说可以用chartwizard来作图。可是似乎在我的机器上没有办法通过。有谁有其他的办法?
谢谢!

解决方案 »

  1.   

    老兄,任何东西都得自己做一些才行,不能等别人都写好了来教你:)你的第一个问题好办,是因为你的概念的问题:
        EXCEL打开后应该有三个变体变量:EXCEL工程;EXCEL工作波;然后才是当前使用工作波的工作表,你存盘的时候不能用工程来另存,应该用工作波:)
      给你一个我自己的例子:
    procedure TFrmRepPara.GBRMSP();//干部任免审批表
    var
      ExcelID,Shet,Book : Variant;
      i,j,k   : integer;
    begin
      ExcelID := CreateOleObject( 'Excel.Application' );
      ExcelID.Visible := True;
      ExcelID.Caption := '常用表格处理';
      Book:=ExcelID.WorkBooks.Open(Pworker.Top_ExePath+'rpt\sf\TGD_GBRMSP.xls' );
      Shet:=ExcelID.WorkBooks[1].WorkSheets[1];
    //注意,另存的是工作波;
      Book.SaveAs(Pworker.Top_ExePath+'Doc\任免审批表\'+Str1 );第二个问题也得自己试试才行,我是用流的方法写入的:0
      if not fDMSf.CdsPublic.FieldByName('ZP').IsNull then
      begin
        Stre1:=TMemoryStream.Create;
        Pict1:=TBitmap.Create;
        try
          tblobfield(fDMSf.CdsPublic.FieldByName('ZP')).SaveToStream(stre1);
          stre1.seek(0,soFromBeginning);
          Pict1.LoadFromStream (Stre1);
          Clipboard.Assign(Pict1);
        finally
          Pict1.Free;
          Stre1.Free;
        end;
        Vrang:=Shet.Range['I3:I6'];
        Vrang.PasteSpecial;
      end;