如何打开一个已存在的Excel文件,并向这个文件中的一些表格中写入数据

解决方案 »

  1.   

    procedure TfrmSG.Button1Click(Sender: TObject);  //uses Excel2000 , ComObj
    var
      pc_i:integer;
      xlapp,sheet: variant;
      WBK: OleVariant;
    begin
      xlapp := createoleobject('excel.application');
      xlapp.visible := True;      //Excel是否可见
      if Trim(Edit1.Text)='' then
      begin
        Application.MessageBox('文件名不能为空','警告',MB_OK);
        Exit;
      end;
      WBK := xlapp.workbooks.Open(Edit1.Text);
      sheet := xlapp.workbooks[1].worksheets['sheet1'];
      sheet.Cells.SpecialCells(XlCellTypeLastCell,EmptyParam).Activate;  //showmessage(IntToStr(xlapp.ActiveCell.Row));
      //showmessage(IntToStr(xlapp.ActiveCell.Column));
      //excelworksheet2.UsedRange[1].Rows.Count));
      //excelworksheet2.UsedRange[1].Columns.Count));
      pc_i:=1;
      Edit2.Text := sheet.cells[pc_i,1];     //写入的话用 sheet.cells[pc_i,1] := Edit2.Tex;
      WBK.Close(SaveChanges := True);
      xlapp.Quit;
    end;
      

  2.   

    給你一段代嗎,你研究一下,現在沒時間procedure TForm1.button1Click(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);
     Table1.Open;
     row:=1;
     While Not(Table1.Eof) do
     begin
       column:=1;
       for i:=1 to Table1.FieldCount do
       begin
        ExcelWorksheet1.Cells.Item[row,column]:
    =Table1.fields[i-1].AsString;
        column:=column+1;
       end;
       Table1.Next;
       row:=row+1;
     end;
    end;
      

  3.   

    Excel中的单元格好像不能换行
      

  4.   

    procedure TForm3.Excel4Click(Sender: TObject);   //将联合查询的结构转为excel表
    var       xlsFilename :string;
              eclApp,WorkBook :variant ;
              a_filedNo,i,j :integer;
    begin
              a_filedNo :=Form3.DBGrid4.FieldCount  ;
              xlsFileName :='关于学生成绩基本信息.xls';          try
                      eclApp :=CreateOleObject('Excel.Application');
                      WorkBook :=CreateOleObject('Excel.Sheet');
              except
                      showmessage('您的系统没有安装MS EXCEL');
                      exit;
              end;          try
                        WorkBook :=eclApp.workBooks.add ;
                        for i :=1 to  a_FiledNo do      //转化字段名;
                         begin
                                //eclApp.cells(1,i) :=Form3.DBGrid4.Columns[i-1].Title.caption ;
                                eclApp.cells(1,i) :=Form3.DBGrid4.Fields[i-1].FieldName ;
                         end;                    Form3.DBGrid4.DataSource.DataSet.First ;
                        for i :=1 to  Form3.a_recno   do    //Form3.a_recno                       begin
                                for j :=1 to  a_filedNo do  //转化一个记录
                                  begin
                                          eclApp.cells(i+1,j) :=Form3.DbGrid4.Fields[j-1].Value ;
                                  end;
                                Form3.DBGrid4.DataSource.DataSet.Next ;
                          end;
                    try
                         WorkBook.saveas(ExtractFilePath(Application.ExeName )+xlsFileName);
                         WorkBook.close;
                         showmessage('保存EXECL文件成功,路径为:'+ExtractFilePath(Application.ExeName )+xlsFileName);
                      except
                               showmessage('保存文件出错');
                      end;
                   except
                     showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
                     WorkBook.close;
                     eclApp.quit;
                     eclApp :=Unassigned;
             end;
    end;