表中的身份证类型是字符串类型在表中和dbgrideh中显示都正常,导出到excel中,就不对了实际表中和dbgrideh中显示的是:432502198106130015导出后变成432502198106130000==========
我用的是下面的这个函数
procedure   TForm1.dbgridehtoexp(lsdbgrideh:tdbgrideh);          //导出excel表格
  var
      ExpClass:TDBGridEhExportClass;   
      Ext:String;   
      lssavedialog:tsavedialog;   
  begin   
      try   
      lssavedialog:=tsavedialog.Create(nil);   
      lssavedialog.Filter:='*.xls|*.xls|*.csv|*.csv|*.htm|*.htm|*.rtf|*.rtf|*.txt|*.txt';   
      lssavedialog.FileName   :=  Exceldc;//'Excel数据清单';
      if   lssavedialog.Execute   then
      begin
       case lssavedialog.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(lssavedialog.FileName,Length(lssavedialog.FileName)-2,3))   <>   UpperCase(Ext)   then
          lssavedialog.FileName   :=   lssavedialog.FileName   +   '.'   +   Ext;   
          if FileExists(lssavedialog.FileName)   then
          begin   
          if application.MessageBox('文件名已存在,是否覆盖',   '提示',   MB_ICONASTERISK   or   MB_OKCANCEL)<>idok   then
          begin
          exit;
          end;
          end;
          Screen.Cursor   :=   crHourGlass;
          SaveDBGridEhToExportFile(ExpClass,lsDBGridEh,lssavedialog.FileName,true);
          Screen.Cursor   :=   crDefault;
      end;
      end;
         showmessage('导出数据完成!');
      finally
          lssavedialog.Free;      end;
  end;

解决方案 »

  1.   

    procedure TmainForm.Educe(dbgrideh: Tdbgrideh);
    var  ExpClass:TDBGridEhExportClass;   //务必在USES处加入DBGRIDEHIMPEXP
         Ext:String;
         SaveDg: TSaveDialog;
    begin
    saveDg:=TsaveDialog.Create(nil);
     saveDg.Filter:='Excel 文件(*.XLS)|*.XLS|文本文件(*.TXT)|*.TXT';
      Savedg.FileName := 'standData';  //if (ActiveControl is TDBGridEh) then
        if Savedg.Execute then    //支持二种格式导出
      begin
        case Savedg.FilterIndex of
          1: begin ExpClass := TDBGridEhExportAsxls; Ext := 'xls'; end;
          2: begin ExpClass := TDBGridEhExportAstext; Ext := 'txt'; end;
        else
          ExpClass := nil; Ext := '';
        end;
        if ExpClass <> nil then
        begin
          if UpperCase(Copy(SaveDg.FileName,Length(Savedg.FileName)-2,3)) <> UpperCase(Ext) then
            SaveDg.FileName := SaveDg.FileName + '.' + Ext;
          SaveDBGridEhToExportFile(ExpClass,DBGridEh,SaveDg.FileName,true);
          //其中false为局部数据
        end;
      end;
    end;
    procedure TmainForm.Bt7Click(Sender: TObject);
    begin
      Educe(DBGridstand);
    end;
    可以用一下这个方法