有三种方法:
1.使用服务容器。在delphi控件面板里有一个servers页面,里面有所有支持的服务容器。你把excel相关的看看,放几个在form上面尝试一下就可以了。不是很困难。
2.如果你不喜欢用容器,你可以使用ole方式,直接与excel交换数据。这样做比较慢,但是可以深刻了解到excel的数据结构。在delphi里面可以这样做
 msexcel := createoleobject('Excel.Sheet');
 WorkBook:=msexcel.Application.WorkBooks.Open (FileName);
 WorkSheet:=WorkBook.WorkSheets[1]; //第一个表单
 然后你会发现worksheet里面的cells里包含了所有数据
3.第三种方法是直接读取excel文件。那你需要了解excel的具体格式。这在网上很多地方都有的。
 

解决方案 »

  1.   

    首先建立一個TExcelApplication控件﹐設名為EA1,
    var aSheet:variant;
        i,j:integer;
    begin
      EA1.Connect;
      EA1.Workbooks.Open('C:\yourexcel.xls',EmptyParam,EmptyParam,EmptyParam,EmptyParam,
            EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,1);
    //這是打開某個特定文件
    //  EA1.Workbooks.Add(xlWBATWorkSheet,0); 直接新增一個Excel文件
      EA1.Visible[0]:=False;
      aSheet:=EA1.Worksheets.Item[1];
      x:=0;
      for i:=1 to yourdata.RecordCount  do
         for j:=1 to yourdata.Fieldcount do
            asheet.Cells[i,j].Value:=yourdata.fields[j-1].asstring;
      SaveDialog.Execute;
      if SaveDialog.FileName<>'noname' then begin
         aSheet.SaveAs(SaveDialog.FileName);
         ShowMessage('文件已保存為'+SaveDialog.FileName);
      end;
      aSheet.Application.Quit;
    end;
    這樣可以把你的數據集資料一筆筆的寫到Excel去。
      

  2.   

    首先建立一個TExcelApplication控件﹐設名為EA1,
    var aSheet:variant;
        i,j:integer;
    begin
      EA1.Connect;
      EA1.Workbooks.Open('C:\yourexcel.xls',EmptyParam,EmptyParam,EmptyParam,EmptyParam,
            EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,1);
    //這是打開某個特定文件
    //  EA1.Workbooks.Add(xlWBATWorkSheet,0); 直接新增一個Excel文件
      EA1.Visible[0]:=False;
      aSheet:=EA1.Worksheets.Item[1];
      x:=0;
      for i:=1 to yourdata.RecordCount  do
         for j:=1 to yourdata.Fieldcount do
            asheet.Cells[i,j].Value:=yourdata.fields[j-1].asstring;
      SaveDialog.Execute;
      if SaveDialog.FileName<>'noname' then begin
         aSheet.SaveAs(SaveDialog.FileName);
         ShowMessage('文件已保存為'+SaveDialog.FileName);
      end;
      aSheet.Application.Quit;
    end;
    這樣可以把你的數據集資料一筆筆的寫到Excel去。
      

  3.   

    另外也找到一些例子
    about Delphi 5.0中如何读取Excel 97文件procedure TOfficeform.Button2Click(Sender: TObject);
    var MSExcel:Variant;
    i,j:Integer;
    begin
    SaveDialog1.Filter:='*.XLS&brvbar;*.XLS';
    SaveDialog1.DefaultExt:='XLS';
    if SaveDialog1.Execute then
    begin
      MSExcel:=CreateOLEObject('Excel.Application');
      MSExcel.WorkBooks.Add;
      MSExcel.Visible:=False;
      Table1.Open;
      j:=Table1.RecordCount;
      Table1.First;
    for i:=1 to j do
      begin
       MSExcel.Cells[i,1].NumberFormat:='@';
       MSExcel.Cells[i,1].Value:=Table1.FieldByName('CODE').AsString;
       MSExcel.Cells[i,2].Value:=Table1.FieldByName('COLOR').AsString;
       Table1.Next;
      end;
      MSExcel.ActiveWorkBook.SaveAs(SaveDialog1.FileName);
      MSExcel.ActiveWorkBook.Saved:=True;
      MSExcel.Quit;
    end;
    end;
    利用Delphi 5中调用Excel 97 
    ---- 在Delphi 5中简单地封装了一组Microsoft Office自动化对象(Automation servers)。它使得我们很容易地把Office中的应用程序(Word, Excel, PowerPoint, Outlook and Access等)当作一个com应用服务器进行控制。在Delphi 5中已经带了Word与PowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以本人根据这两个例子写了个Excel 97的简单例子以供参考。 
    ---- 步聚 
    1.   创建一个普通Application。 
    2.  在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 
    3.  连接Excel 97,具体方法如下: 
    打开Excel97。
    Try
       ExcelApplication1.Connect;
       Except
       End;
       ExcelApplication1.Visible[0]:=True;
    增加一个Workbook。
    ExcelWorkbook1.ConnectTo(ExcelApplication1.
       Workbooks.Add(EmptyParam,0));添加一个Worksheet。
       var
    Temp_Worksheet: _WorkSheet;
    begin
    Try
    Temp_Worksheet:=ExcelWorkbook1.
    WorkSheets.Add(EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,0) 
    as _WorkSheet;//(注意)
    ExcelWorkSheet1.ConnectTo(Temp_WorkSheet);
    Except
    ShowMessage('Failure');
       End;
       end;
       关闭Excel.
       Try
       ExcelApplication1.Quit;
    ExcelWorksheet1.Disconnect;
       ExcelWorkbook1.Disconnect;
       ExcelApplication1.Disconnect;
       Except
       End;
    ---- 4. 对Excel的一些操作: 
    选择当前Workbook的某一Worksheet.
    procedure TForm1.ComboBox1DropDown
    (Sender: TObject);
    var
      i: Integer;
    begin
       ComboBox1.Clear;
    For i:=1 to ExcelWorkbook1.
    Worksheets.Count do
       ComboBox1.Items.Add
    ((ExcelWorkbook1.Worksheets.Item 
    as _WorkSheet).Name);
    end;procedure TForm1.ComboBox1Change
    (Sender: TObject);
    begin
       ExcelWorkSheet1.ConnectTo
    (ExcelWorkbook1.Worksheets.Item
    [ComboBox1.ItemIndex+1] as _WorkSheet);
       ExcelWorkSheet1.Activate;
    end;选择某一Workbook:
    procedure TForm1.ComboBox2DropDown
    (Sender: TObject);
    var
      i: Integer;
    begin
    ComboBox2.Clear;
    if ExcelApplication1.Workbooks.Count >0 then
    For i:=1 to ExcelApplication1.Workbooks.Count do
    Combobox2.Items.Add(ExcelApplication1.
       Workbooks.Item.Name);
    end;procedure TForm1.ComboBox2Change(Sender: TObject);
    begin
    ExcelWorkSheet1.Disconnect;
    ExcelWorkBook1.ConnectTo(ExcelApplication1.Workbooks.
    Item[Combobox2.ItemIndex+1]);
       ExcelWorkBook1.Activate;
       ExcelWorksheet1.ConnectTo(ExcelWorkBook1.
     ActiveSheet as _WorkSheet);
       ExcelWorkSheet1.Activate;
    end;对某一单元格进行赋值及取值。
    procedure TForm1.Button5Click(Sender: TObject);
    begin
       ExcelWorksheet1.Cells.Item[SpinEdit2.Value,
       SpinEdit1.Value]:=Edit1.Text;
    end;procedure TForm1.Button6Click(Sender: TObject);
    begin
       Edit1.Text:=ExcelWorksheet1.Cells.Item[
       SpinEdit2.Value,SpinEdit1.Value];
    end;选择某一区域
    ExcelWorkSheet1.Range['A1','C1'].Select;打开一个Excel文件。
     if OpenDialog1.Execute then
       Begin
       Try
    ExcelWorkBook1.ConnectTo
    (ExcelApplication1.Workbooks.Open
       (OpenDialog1.FileName,
    EmptyParam,EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,EmptyParam,
       EmptyParam,EmptyParam,
    EmptyParam,EmptyParam,0));
       ExcelWorkSheet1.ConnectTo
    (ExcelWorkBook1.Activesheet
      as _Worksheet);
       Except;
       End;
       End;
    ---- 说明 
    ---- 本程序在Win98+Delphi 5+Excel 97下运行通过。本例子还可以作适当的扩充,如DDE、执行宏调用、保存文件、打印文件及对Excel的设置等,此设置方法请参阅Microsoft Excel Visual Basic参考中的Microsoft Excel对象
      

  4.   

    用ole
    olecontainter1.createlinktofile(filepath,false);
    如果要新建excel文档
    olecontainter.createobject('excel.sheet',false);
    另外还有createobjectfromfile createobjecttofile createobjectforminfo
    等都可以实现对excel文档及word文档的操作
      

  5.   

    可用下面apiShellExecute(
        HWND hwnd,           // handle to parent window
        LPCTSTR lpOperation, // pointer to string that 
                               //specifies operation to perform
        LPCTSTR lpFile,        // pointer to filename or folder 
                               //name string
        LPCTSTR lpParameters, // pointer to string that   
                               //specifies  executable-file parameters 
        LPCTSTR lpDirectory, // pointer to string that 
                               //specifies default directory
        INT nShowCmd          // whether file is shown when opened
       );
      

  6.   

    楼上的仁兄说的方法可以直接用Excel程序打开我想如果想读取数据的话可以用ADO试试