要可以由用户自己设定文件名和保存路径。
现在要学习用delphi操作office系列的文件,delphi的联机帮助文件好象说得不大清楚,请问哪里可以找到学习资源?

解决方案 »

  1.   

    unit Unit7_16;interfaceuses Windows, Classes, Graphics, Forms, Controls, DB, DBGrids,
      DBTables, Grids, StdCtrls, ExtCtrls, ComCtrls, Dialogs, OleCtrls,
      OleCtnrs, OleServer, Excel2000;type
      TOLE_Form1 = class(TForm)
        Panel1: TPanel;
        InsertBtn: TButton;
        Table1: TTable;
        Table1NAME: TStringField;
        Table1SIZE: TSmallintField;
        Table1WEIGHT: TSmallintField;
        Table1AREA: TStringField;
        Table1BMP: TBlobField;
        ExcelApplication1: TExcelApplication;
        OleContainer1: TOleContainer;
        procedure InsertBtnClick(Sender: TObject);
      end;var
      OLE_Form1: TOLE_Form1;implementationuses ComObj;{$R *.DFM}procedure TOLE_Form1.InsertBtnClick(Sender: TObject);
    var
      aSheet, aChart, series: Variant;
      i: integer;
    begin
      // 显示MS-Excel的运行过程
      ExcelApplication1.Visible[0] := True;  // 创建一个 WorkBook
      ExcelApplication1.WorkBooks.Add(xlWBATWorksheet,0);  // 获取 WorkBook 中的一页 WorkSheet
      aSheet:=ExcelApplication1.Worksheets.Item[1];  // 将Animals.dbf的数据填入Sheet的Cells二维数组内
      aSheet.Cells[1,1].Value:='大小';
      aSheet.Cells[3,1].Value:='体重';
      i := 2;
      with Table1 do begin
        Open;
        First;
        while not eof do begin
           aSheet.Cells[1, i].Value:=FieldByName('Name').AsString;
           aSheet.cells[2, i].Value:=FieldByName('Size').AsString;
           aSheet.cells[3, i].Value:=FieldByName('Weight').AsString;
           i:=i+1;
           Next;
        end;
      end;  // 在Sheet上加入一块空的统计图形
      aChart := aSheet.ChartObjects.Add(100, 50, 200, 150);
      series := aChart.chart.SeriesCollection;  // 将Sheet上某段范围的数据画出对应的统计图表
      series.Add('Sheet1!R1C1:R2C7', TRUE);
      series.Add('Sheet1!R3C1:R3C7', TRUE);  // 将数据存成Excel格式的文件
      aSheet.SaveAs('C:\a.xls');  // 把 Excel 文件 Insert 到 OleContainer
      OleContainer1.CreateObjectFromFile('C:\a.xls',False);  // 结束MS-Excel的运行
      aSheet.Application.Quit;
    end;end.
      

  2.   

    procedure TFRMain.ExcelBDCS;   //把BDCS统计的导入Excel
    var
      xlsFilename :string;
      eclApp,WorkBook :variant ;
      a_filedNo,i,j :integer;
    begin
      if not SaveDialog1.Execute then
        exit;       //按下取消按钮
      a_filedNo:=ADOQueryFX.FieldCount;
      xlsfilename:=savedialog1.FileName+'.xls';
      try
        eclApp:=CreateOleObject('Excel.Application');
        WorkBook :=CreateOleObject('Excel.Sheet');
      except
        showmessage('没有安装MS EXCEL');
        exit;
      end;
      try
        WorkBook:=eclApp.workBooks.add;
        eclApp.cells[1,1]:='总拨打次数';
        eclApp.cells[1,2]:='有效次数';
        eclApp.cells[1,3]:=copy(comboboxy.Text,3,255);
        ADOQueryFX.First ;  //ADOQueryFX是一个查询记录集
        for i :=1 to ADOQueryFX.RecordCount do    
        begin
          for j :=1 to  a_filedNo do
          begin
            eclApp.cells[i+1,j].value:=''+ADOQueryFX.Fields[j-1].asstring;
          end;
          ADOQueryFX.Next ;
        end;
        try
          WorkBook.saveas(xlsFileName);
          WorkBook.close;
        except
          showmessage('保存出错');
        end;
      except
        WorkBook.close;
        eclApp.quit;
        eclApp :=Unassigned;
      end;
    end;这个程序在实际中我用来把一个查询结果导入EXCEL;
      

  3.   

    http://expert.csdn.net/Expert/topic/2357/2357198.xml?temp=.2858393
      

  4.   

    哥们,用我的这个吧,这是我最近刚完的一个项目里面的.  procedure Trydc.suiButton2Click(Sender: TObject);
    var
            i,row,column:integer;
    begin
            Try
                    ExcelApplication1.Connect;
            Except
                    MessageDlg('Excel may not be installed',mtError, [mbOk], 0);
                    Abort;
            End;
            ExcelApplication1.Visible[0]:=True;
            ExcelApplication1.Caption:='Excel Application';
            ExcelApplication1.Workbooks.Add(Null,0);
            ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks[1]);
            ExcelWorksheet1.ConnectTo(ExcelWorkbook1.Worksheets[1] as _Worksheet);
            ADOQuery1.Open;
            row:=1;
            While Not(ADOQuery1.Eof) do
            begin
                    column:=1;
                    for i:=1 to ADOQuery1.FieldCount do
                    begin
                    ExcelWorksheet1.Cells.Item[row,column]:=ADOQuery1.fields[i-1].AsString;
                    column:=column+1;
                    end;
            ADOQuery1.Next;
            row:=row+1;
            end;
    end;