DBGridEh导出到EXCEL,用Excel 2003和Excel 2007都能正常打开,但用Excel 2010打开则提示【文件已损坏,无法打开】的错误。不知道各位大虾有没有遇到过?有没有什么解决方案,DBGridEh控件的版本为5.28。

解决方案 »

  1.   

    可能是文件格式的问题吧。其实你可以用些文件的方法,自己写程序导出了数据,
    文件名后缀。csv
    格式:
    1,2,3
    4,5,6
    7,8,9这个办法速度很快!
      

  2.   

    procedure TRES_CQ_JBPG_F.E1Click(Sender: TObject);
    begin
      inherited;
      if qry_jb.IsEmpty then
      begin
        MessageBox(Handle,'加班數據不能為空!!!','數據導出...',MB_OK+ MB_ICONWARNING);
        Exit;
      end else
      begin
        if dlgSave1.Execute then
        begin
          ExportGridToExcel(dlgSave1.FileName,cxGrid2,True,True,False,'XLS');
          MessageBox(Handle,'加班數據成功導出!!!','數據導出...',MB_OK+ MB_ICONWARNING);
        end;
      end;
    end;
      

  3.   

    谢谢回复!
    to:xjq2003转成csv的确可以,但利用Excel打开会出现格式丢失的问题,如导出00100,打开后可能只能看到100to:kye_jufeiExportGridToExcel 是DBGridEh里的方法吗?我怎么没有找到。我导出的代码是:
    var   ExpClass:TDBGridEhExportClass;
              Ext:String;
    begin
        SaveDialog1.FileName   :=   '';
        if   SaveDialog1.Execute   then
        begin
            case   SaveDialog1.FilterIndex   of
                5:   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;
                1:   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,dbgrideh1,
                          SaveDialog1.FileName,true);
            end;
        end;
      

  4.   

    可能是Uses中导出Excel的单元版本不支持Excel2010吧!这可可以自己试着修改支持版本,建立一个新的单元文件专门处理Excel2010
      

  5.   

    应该是格式的问题  不找到
    OLEdb能不能达到你的目的 
    我没试过
      

  6.   

    EXCEL的格式问题吧,你转换为XLS格式的试一下
      

  7.   

    http://topic.csdn.net/u/20100905/09/d086174a-2684-42aa-8aff-d48736e39fa4.html?56445
      

  8.   

    我觉得应该DBGridEh导出到EXCEL有问题和EXCEL2010的兼容性有问题,不知道有没有解决此问题的新版本
      

  9.   

    利用EXCEL 2003及ExCEL 2007都没有什么问题的。
      

  10.   

    if   UpperCase(Copy(SaveDialog1.FileName,Length(SaveDialog1.FileName)-2,3))   <>
                      UpperCase(Ext)   then建议改为:if sametext(ExtractFileExt(SaveDialog1.FileName),Ext)=false then
    另外,你导出DBGridEn到Excel用的是什么方法?是不是用法上有误?无代码无真相。