eclApp := CreateOleObject('Excel.Application');
  WorkBook :=CreateOleObject('Excel.Sheet');
  workBook:=eclApp.workBooks.Add;
  eclApp.Cells(1,1):='字符型';
  WorkBook.saveas('D:\a2.xls');
  WorkBook.Close;
  eclApp.Quit;
  eclApp:=Unassigned;上面的代码在delphi7中运行没有问题。建立出来了一个a2.xls文件。其中有3个sheet页,是已Sheet1、Sheet2、Sheet3来命名的。但是我现在只想要一个Sheet而且我想自己命名该如何??

解决方案 »

  1.   

    OK
    我给我现在用的。
    --------------------------------------------------------
    procedure Tzdxxcx.Button1Click(Sender: TObject);
    var
      ss : TStrings;
      i, j : integer;
      s, sFields, sTitle : string;
    begin
      if SaveDialog1.Execute then
      begin
        sFields := ';';
        sTitle := '';
        For i := 0 to Self.ComponentCount - 1 do
          if (Self.Components[i] is TDBGrideh) then
          begin
            if (Self.Components[i] as TDBGrideh).DataSource = datasource1 then
            begin
              For j := 0 to (Self.Components[i] as TDBGrideh).Columns.Count - 1 do
              begin
                sTitle := sTitle + (Self.Components[i] as TDBGrideh).Columns[j].Title.Caption + #9;
                sFields := sFields + (Self.Components[i] as TDBGrideh).Columns[j].FieldName + ';';
              end;
            end;
          end;
        j := query1.FieldCount - 1;
        query1.First;
        ss := TStringList.Create;
        ss.Add(sTitle);
        while not query1.Eof do
        begin
          s := '';
          if sFields <> ';' then
          begin
            for i := 0 to j do
              if (Pos(';'+query1.Fields[i].FieldName+';', sFields) > 0)
                or (query1.Fields[i].DataType = ftMemo) then
                  s := s + query1.Fields[i].asstring + #9;
          end
          else
          begin
            for i := 0 to j do
              s := s + query1.Fields[i].asstring + #9;
          end;
          ss.Add(s);
          query1.Next;
        end;
        ss.SaveToFile(SaveDialog1.FileName);
        ss.free;
      end;
    end;
    ---------------------------------------------------------------
    在你的form上必须要放query,datasource,savedialog,呵呵,相信你一定能看懂这个程序吧。
    还有savedialog的filter属性里改为 excel file|*.xls
    defaultext 改为xls
      

  2.   

    对了,我用的是DBGridEH,如果你用DBGrid就要改相应的地方哦。
      

  3.   

    偶要导入到里面的数据不是记录集!!!偶是想知道用什么可以控制工作薄中的Sheet!!!! 新增、删除、更名 是如何实现di
      

  4.   

    哈哈!  这个是DFW上的一个帖子,里面也没有提到删除和修改工作簿NAME,你自己试吧
    <转 作者不详>
    如何用DELPHI启动EXCEL并打开指定的文件?
    首先创建 Excel 对象,使用ComObj:
    var ExcelID: Variant;ExcelID := CreateOleObject( ’Excel.Application’ );1) 显示当前窗口:
    ExcelID.Visible := True;2) 更改 Excel 标题栏:
    ExcelID.Caption := ’应用程序调用 Microsoft Excel’;3) 添加新工作簿:
    ExcelID.WorkBooks.Add;4) 打开已存在的工作簿:
    ExcelID.WorkBooks.Open( ’C:\Excel\Demo.xls’ );5) 设置第2个工作表为活动工作表:
    ExcelID.WorkSheets[2].Activate;  
    或 
    ExcelID.WorksSheets[ ’Sheet2’ ].Activate;6) 给单元格赋值:
    ExcelID.Cells[1,4].Value := ’第一行第四列’;7) 设置指定列的宽度(单位:字符个数),以第一列为例:
    ExcelID.ActiveSheet.Columns[1].ColumnsWidth := 5;8) 设置指定行的高度(单位:磅)(1磅=0.035厘米),以第二行为例:
    ExcelID.ActiveSheet.Rows[2].RowHeight := 1/0.035; // 1厘米9) 在第8行之前插入分页符:
    ExcelID.WorkSheets[1].Rows[8].PageBreak := 1;10) 在第8列之前删除分页符:
    ExcelID.ActiveSheet.Columns[4].PageBreak := 0;11) 指定边框线宽度:
    ExcelID.ActiveSheet.Range[ ’B3:D4’ ].Borders[2].Weight := 3;1-左    2-右   3-顶    4-底   5-斜( \ )     6-斜( / )12) 清除第一行第四列单元格公式:
    ExcelID.ActiveSheet.Cells[1,4].ClearContents;13) 设置第一行字体属性:
    ExcelID.ActiveSheet.Rows[1].Font.Name := ’隶书’;
    ExcelID.ActiveSheet.Rows[1].Font.Color  := clBlue;
    ExcelID.ActiveSheet.Rows[1].Font.Bold   := True;
    ExcelID.ActiveSheet.Rows[1].Font.UnderLine := True;14) 进行页面设置:a.页眉:
        ExcelID.ActiveSheet.PageSetup.CenterHeader := ’报表演示’;
    b.页脚:
        ExcelID.ActiveSheet.PageSetup.CenterFooter := ’第&P页’;
    c.页眉到顶端边距2cm:
        ExcelID.ActiveSheet.PageSetup.HeaderMargin := 2/0.035;
    d.页脚到底端边距3cm:
        ExcelID.ActiveSheet.PageSetup.HeaderMargin := 3/0.035;
    e.顶边距2cm:
        ExcelID.ActiveSheet.PageSetup.TopMargin := 2/0.035;
    f.底边距2cm:
        ExcelID.ActiveSheet.PageSetup.BottomMargin := 2/0.035;
    g.左边距2cm:
        ExcelID.ActiveSheet.PageSetup.LeftMargin := 2/0.035;
    h.右边距2cm:
        ExcelID.ActiveSheet.PageSetup.RightMargin := 2/0.035;
    i.页面水平居中:
        ExcelID.ActiveSheet.PageSetup.CenterHorizontally := 2/0.035;
    j.页面垂直居中:
        ExcelID.ActiveSheet.PageSetup.CenterVertically := 2/0.035;
    k.打印单元格网线:
        ExcelID.ActiveSheet.PageSetup.PrintGridLines := True;15) 拷贝操作:a.拷贝整个工作表:
        ExcelID.ActiveSheet.Used.Range.Copy;
    b.拷贝指定区域:
        ExcelID.ActiveSheet.Range[ ’A1:E2’ ].Copy;
    c.从A1位置开始粘贴:
        ExcelID.ActiveSheet.Range.[ ’A1’ ].PasteSpecial;
    d.从文件尾部开始粘贴:
        ExcelID.ActiveSheet.Range.PasteSpecial;16) 插入一行或一列:a. ExcelID.ActiveSheet.Rows[2].Insert;
    b. ExcelID.ActiveSheet.Columns[1].Insert;
    17) 删除一行或一列:a. ExcelID.ActiveSheet.Rows[2].Delete;
    b. ExcelID.ActiveSheet.Columns[1].Delete;18) 打印预览工作表:
    ExcelID.ActiveSheet.PrintPreview;19) 打印输出工作表:
    ExcelID.ActiveSheet.PrintOut;20) 工作表保存:
    if not ExcelID.ActiveWorkBook.Saved then
       ExcelID.ActiveSheet.PrintPreview;21) 工作表另存为:
    ExcelID.SaveAs( ’C:\Excel\Demo1.xls’ );22) 放弃存盘:
    ExcelID.ActiveWorkBook.Saved := True;23) 关闭工作簿:
    ExcelID.WorkBooks.Close;24) 退出 Excel:
    ExcelID.Quit;
      

  5.   

    if savedialog1.execute then
        begin
          i:=2;
          fname:=SaveDialog1.Files[0];
          try
            eclapp:=createoleobject('excel.application');
            workbook:=createoleobject('excel.sheet');
          except
            showmessage('您的系统没有安装MS EXCEL');
            exit;
          end;      try
            workbook:=eclapp.workbooks.add;
            savedialog1.FileName:='';
            save_cursor:=screen.Cursor;
            screen.Cursor:=crhourglass;
            i:=1;
            while not dm.query.eof do
              begin
                eclapp.cells[i,1]:=trim(dm.query.fieldbyname('username').asstring);            dm.query.next;
                i:=i+1;
              end;
              try
                if FileExists(fname) then DeleteFile(fname);
                workbook.saveas(fname);
                workbook.close;
                showmessage('保存EXECL文件成功!');
              except
                showmessage('保存文件出错');          end;
          except
            showmessage('不能正确操作EXECL文件,可能该文件已经被其他程序占用或系统错误');
            WorkBook.close;
            eclApp.quit;
            eclApp :=Unassigned;
          end;