function  DBGridEhToExportFile(dbgrideh:TDBGridEh;filename:string='导出的文件'):boolean ;
var ExpClass:TDBGridEhExportClass;
    Ext:String;
    savedialog1:tsavedialog;
begin
result:=True ;
    savedialog1:=tsavedialog.Create(nil);
     savedialog1.Filter:='Excel 文件(*.xls)|*.xls|分隔符格式(*.csv)|*.csv|Html文件(*.htm)|*.htm|WORD 文件(*.rtf)|*.rtf|文本文件(*.txt)|*.txt';
     savedialog1.FileName:=filename;
  if (dbgrideh is TDBGridEh) then
    if SaveDialog1.Execute then
    begin
      case SaveDialog1.FilterIndex of
        1: begin ExpClass := TDBGridEhExportAsText; Ext := 'xls'; 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 := 'txt'; 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;     if sysutils.FileExists( SaveDialog1.FileName) then
       begin
        if application.MessageBox('文件已存在,替换?','提示',mb_yesno+mb_defbutton1+mb_iconquestion+mb_systemmodal)=idyes then
          begin
           if   sysutils.DeleteFile( SaveDialog1.FileName)=false then
            begin
               showmessage(filename+'文件正在使用,无法替换.'+chr(13)+chr(10)+'请关闭文件:'+savedialog1.FileName+'.在重新导入。');           result:=false;
               exit;
            end;
        end;
       end;
        SaveDBGridEhToExportFile(ExpClass,TDBGridEh(dbgrideh),  SaveDialog1.FileName,true);  //改为false 只导出选择行
      end;
    end
    else
    begin
      result:=false;
    end;
  SaveDialog1.Free ;
end;导出到EXCEL 可以,
导出到HTM   可以
导出到TXT 中文正常显示但前后有乱码
导出到CVS 分割符是分号不是逗号
导出到RTF ,中文是乱码高手指点 delphi 2010 update 5 

解决方案 »

  1.   

    delphi 2010 dbgrideh EhLib5.0.13
      

  2.   

    你看看是不是缺少一个参数,是指定编码的,2010默认unicode
      

  3.   

    自己不细心,呵呵,发现问题所在了,只是导出为CSV文件时,默认是分号分隔的有没有人能解决?
      

  4.   

    怎么解决的啊?
    告诉我http://topic.csdn.net/u/20100324/11/f2f22728-282c-4115-819b-23bb92f2642c.html