我 现在有excel源程序,但是不能解决你的所有问题,等过一下我解决了就发给你!

解决方案 »

  1.   

    用个控件不省事吗? XLSRW不错
      

  2.   

    to daiver
    OK!我的分数给你留着!!!!
    TO XNAKE
    介绍一下!!下控件地址呢???
      

  3.   

    help me !!!!
    HOPE.................................
      

  4.   

    正巧,我刚弄了个例子。
    unit example;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, Excel97, OleServer, Buttons, Spin,comobj, AxCtrls, OleCtrls;type
      TForm1 = class(TForm)
        ExcelApplication1: TExcelApplication;
        ExcelWorksheet1: TExcelWorksheet;
        ExcelWorkbook1: TExcelWorkbook;
        Button1: TButton;
        Button2: TButton;
        Button3: TButton;
        ComboBox1: TComboBox;
        ComboBox2: TComboBox;
        BitBtn1: TBitBtn;
        Edit1: TEdit;
        Button4: TButton;
        SpinEdit1: TSpinEdit;
        SpinEdit2: TSpinEdit;
        Button5: TButton;
        Button6: TButton;
        Button7: TButton;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
        procedure Button3Click(Sender: TObject);
        procedure ComboBox1DropDown(Sender: TObject);
        procedure ComboBox1Change(Sender: TObject);
        procedure ComboBox2DropDown(Sender: TObject);
        procedure ComboBox2Change(Sender: TObject);
        procedure Button4Click(Sender: TObject);
        procedure Button5Click(Sender: TObject);
        procedure Button6Click(Sender: TObject);
        procedure Button7Click(Sender: TObject);
    private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Button1Click(Sender: TObject);
    begin
      Try
      ExcelApplication1.Connect;
      Except
      End;
      ExcelApplication1.Visible[0]:=True;
      ExcelWorkbook1.ConnectTo(ExcelApplication1.Workbooks.Add(EmptyParam,0));
    end;procedure TForm1.Button2Click(Sender: TObject);
    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;procedure TForm1.Button3Click(Sender: TObject);
    begin
      Try
      ExcelApplication1.Quit;
      ExcelWorksheet1.Disconnect;
      ExcelWorkbook1.Disconnect;
      ExcelApplication1.Disconnect;
      Except
      End;end;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[i] as _WorkSheet).Name);
    end;procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      ExcelWorkSheet1.ConnectTo(ExcelWorkbook1.Worksheets.Item[ComboBox1.ItemIndex+1] as _WorkSheet);
      ExcelWorkSheet1.Activate;
    end;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[i].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.Button4Click(Sender: TObject);
    begin
      ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value]:=Edit1.Text;
    end;procedure TForm1.Button5Click(Sender: TObject);
    begin     
      Edit1.Text:=ExcelWorksheet1.Cells.Item[SpinEdit2.Value,SpinEdit1.Value];
    end;procedure TForm1.Button6Click(Sender: TObject);
    begin
    ExcelWorkSheet1.Range['A1','C1'].Select;
    end;procedure TForm1.Button7Click(Sender: TObject);
    begin
    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;
    end;end.
      

  5.   

    在Delphi 5中简单地封装了一组Microsoft Office自动化对象(Automation servers)。它使得我们很容易地把Office中的应用程序(Word, Excel, PowerPoint, Outlook and Access等)当作一个com应用服务器进行控制。在Delphi 5中已经带了Word与PowerPoint的例子,因为Excel的调用与这两个应用服务器的调用略有不同,所以本人根据这两个例子写了个Excel 97的简单例子以供参考。 ---- 步聚 创建一个普通Application。 在Form中分别放入ExcelApplication, ExcelWorkbook和ExcelWorksheet。 连接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[i] 
    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[i].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对象。 
      

  6.   

    第二个问题的解答:
    这是我写的两个过程,第一个过程用户画表格线,第二个过程用户合并单元格。
    使用方法十分简单,你只需要将所选择的区域的range对象以参数传递给相应的过程即可。
    procedure drawtableline(range:variant);
    begin
       range.Borders[5].LineStyle := -4142;
            range.Borders[6].LineStyle := -4142;
            range.Borders[7].LineStyle := 1;       
            range.Borders[7].ColorIndex := -4105;
            range.Borders[8].LineStyle := 1;
            range.Borders[8].ColorIndex := -4105;
            range.Borders[9].LineStyle := 1;
            range.Borders[9].ColorIndex := -4105;
            range.Borders[10].LineStyle := 1;
            range.Borders[10].ColorIndex := -4105;
            range.Borders[11].LineStyle := 1;
            range.Borders[11].ColorIndex := -4105;
            range.Borders[12].LineStyle := 1;
            range.Borders[12].ColorIndex := -4105;
    end;
    procedure hbtablecells(range:variant);
    begin
      range.HorizontalAlignment:=-4108;
      range.VerticalAlignment:=-4160;
      range.WrapText:=False;
      range.Orientation:=0;
      range.AddIndent:=False;
      range.ShrinkToFit:=False;
      range.MergeCells:=False;
      range.Merge;
    end;
    建议:当遇到困难时,比如需要复杂的样式时,
    你可以自己在Excel或Word中录制宏,然后选择
    编辑该宏,查看相应的VBA源程序,这是VBA程
    序源的捷径。只是在其中有好多的微软定义的
    常量。幸好我可以将这个库提供给你,你只需
    将VBA源程序改成object pascal代码,然后将
    这些常量换成我给你得知就可以了。这个单元
    文件我已经给你用邮件发过去了。http://go.163.com/~ssudi
    [email protected] 
    lsscxy2263.net
      

  7.   

    一个最简单的方法:
    使用F1BOOK控件来处理此问题:先用DELPHI语句控制F1BOOK中的输入格式然后再由F1BOOK的另存为EXCEL文件(可惜只支持EXCEL5版本)
      

  8.   

    please help me!!!!
    第二个问题!!!!!??????