用ExportGrid4ToExcel把cxGrid的数据导出到Excel,1.显示为170201600008,但导出Excel后就显示为1.70202E+11.2.显示为 -2.2导出变成  '2.2 不能在EXCEL中求和;解决另给100分

解决方案 »

  1.   

    http://bbs.2ccc.com/topic.asp?topicid=151568
      

  2.   

    导出后,设置excel字段格式为 数字,小数点位自己设置
      

  3.   

    高手都不用这个控件?这个VCL功能不错.
      

  4.   

    uses
     cxExportGrid4Link;
    ////////////////begin
     ExportGrid4ToEXCEL('c:\test.xsl',cxGrid1,True,True);
    end;
      

  5.   

    TO:
    GARNETT2183(極品狼王)大哥,我要的是....
    这是导出方法.
      

  6.   

    取分如下...
    http://community.csdn.net/Expert/topic/4579/4579018.xml?temp=7.172793E-02
      

  7.   

    要控制每列的格式,都是自己写导出的代码(速度当然和ExportGrid4ToExcel无法相比)  {  将cxGrid中的数据导入 Excel 中
                    GridName:  需打印的DBGrid
                    RepCapt:   Excel标题
                    StrCol:    格式化字段为字符型的列序号 (-1-2-3-4-..10-..N..)   }
    Procedure DBGrdToExcel(GridName: TcxGridDBTableView; RepCapt,StrCol: string);
    var XLApp, sheet, Range: Variant;
        I,J,t:Integer;
    begin
      If (GridName.DataController.DataSource = Nil) or (GridName.DataController.DataSource.DataSet = Nil) or
         (GridName.DataController.DataSource.DataSet.Active = False) then
      begin
        Application.MessageBox('无效的数据源或数据源未打开','提示',0);
        Exit;
      end;
      t := 1;
      XLApp:=CreateOleobject('Excel.Application');
      XLApp.visible := False;
      XLApp.Workbooks.add(XlWBatWorkSheet);
      XLApp.Workbooks[1].worksheets[1].name:='BES';
      Range:=XLApp.workbooks[1].Worksheets['BES'].Columns;
      sheet:=XLApp.Workbooks[1].worksheets['BES'];
      sheet.cells[t,1]:=COMPANYNAME;
      I:= GridName.ColumnCount-1;
      if I < 3 then I := 3;
      sheet.cells[t,I]:='Date:'+DateTimeToStr(Now);
      sheet.cells[t+2,I div 2] := RepCapt;
      sheet.cells[t+2,I div 2].Font.Color := clRed;
      sheet.cells[t+2,I div 2].Font.Size := 14;
      Sheet.cells[t+2,I div 2].Font.FontStyle := 'Bold';
      Inc(t,4);
      For J:=1 to GridName.ColumnCount do
      begin
        if GridName.Columns[J-1].Width <= 0 then
          Range.Columns[J].Columnwidth := 18
        else
          Range.Columns[J].Columnwidth :=  GridName.Columns[J-1].Width  Div 6;
        sheet.cells[t,J] := GridName.Columns[J-1].Caption ;
        if Pos('-'+IntToStr(J)+'-',StrCol) <> 0 then
          Range.Columns[J].NumberFormatLocal := '@';
      end;
      Inc(t);
      with GridName.DataController.DataSource.DataSet do
      begin
        First;
        I := 0;
        while not eof do
        begin
          For J:=0 to GridName.Columncount-1 do
           if Trim(GridName.Columns[J].DataBinding.FieldName) <> '' then
            sheet.cells[I+t,J+1] := FieldByName(GridName.Columns[J].Databinding.FieldName).AsString;
          Inc(I);
          Next;
        end;
      end;
      XLApp.visible := True;
    end;例:如需将Excel中的第1、3、5列设为文本列,则将过程中的参数StrCol 设为'-1-3-5-'即可
      

  8.   

    Range.Columns[J].NumberFormatLocal := '@'; //将列设为文本格式
      

  9.   

    至少可以拿100分了设置 optiondata 属性:数字为 Curreynet 如果要金额符号就保留,不要就不保货币符号.文本设置为TEXTEDTI;导出就可以了.