procedure TForm1.Button1Click(Sender: TObject);
var
  ExpClass: TDBGridEhExportClass;
  Ext: string;
begin
  dgeMobileCardInf.SetFocus;
  SaveDialog1.FilterIndex := 5;
  if (ActiveControl is TDBGridEh) then
    if SaveDialog1.Execute then
    begin
      case SaveDialog1.FilterIndex of
        1: begin ExpClass := TDBGridEhExportAsText; Ext := 'txt'; end;
        2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
        3: begin ExpClass := TDBGridEhExportAsHTML; Ext := 'htm'; end;
        4: begin ExpClass := TDBGridEhExportAsRTF; Ext := 'rtf'; end;
        5: begin ExpClass := TDBGridEhExportAsXLS;Ext := 'xls';end;
      else
        ExpClass := nil; Ext := '';
      end;
       if ExpClass <> nil then
      begin
         if UpperCase(Copy(SaveDialog1.FileName, Length(SaveDialog1.FileName) - 2, 3)) <>
          UpperCase(Ext) then
          SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
        SaveDBGridEhToExportFile(ExpClass,TDBGridEh(ActiveControl),
          SaveDialog1.FileName, true);
      end;
      showmessage('保存完毕!');
    end;end;
我用上面的代码可以导出excel表,但我现在的问题是用上面这种方法导出怎样把excel表分成多个sheet(工作表)来保存数据,我在网上查了好多资料好象没这方面的,还请各位帮忙看看

解决方案 »

  1.   

    换个思路:
    直接用select into excel表 形式导出。
    连接savedialog.filename access数据库
    如果要防止表名重复就在into表名上加个当前时间
      

  2.   

    yz_xiaoyu(xiaoyu85)你说的那种方法速度怎么样啊
      

  3.   

    yz_xiaoyu(xiaoyu85)那你的那个是怎么做的啊能不能给个实例啊,还有就是我用的数据库是sql server
      

  4.   

    sql server的数据库操作应该类似aq.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+savedialog1.FileName+';Mode=ReadWrite;Extended Properties=Excel 8.0;Persist Security Info=False';aq.SQL.Clear;aq.SQL.Add('select bh as 编号,ksh as 考试号,xx as 学校,bj as 班级,xk as 选科,xm as 姓名,yw as 语文,sx as 数学,yy as 英语,wl as 物理,hx as 化学,zz as 政治,ls as 历史,dl as 地理,sw as 生物 into [全科导出表'+''''+datetimetostr(now)+''''+'] from [score] in a_all.mdb')aq.ExecSQL;