DBGrid里有一列,长度为13,全是数字类的条码,导入到Excel里全成了科学计数法了,请问如何不让它自动变成科学计数法啊?

解决方案 »

  1.   

    1:将某一列:
    var XLApp, sheet, Range: Variant;
    begin
      XLApp:=CreateOleobject('Excel.Application');
      XLApp.visible := False;
      XLApp.Workbooks.add(XlWBatWorkSheet);
      XLApp.Workbooks[1].worksheets[1].name:='BES';
      sheet:=XLApp.Workbooks[1].worksheets['BES'];
      Range:=XLApp.workbooks[1].Worksheets['BES'].Columns;  Range.Columns[1].NumberFormatLocal := '@';   //将第一列设为文本格式
      sheet.cells[I,J].NumberFormatLocal := '@';   //将第I行 第J列所指定的单元格设为文本格式注意:Excel的行与列的下标是从1开始的
      

  2.   

    给你一段操作excel的代码参考:procedure TForm1.Button1Click(sender:Tobject);
    vareclApp,WordBook:Variant; {声明为OLE Automation对象}
    xlsFileName:string;
    begin
    xlsFileName:=’ex.xls’;
    try
    {创建OLE对象:Excel Application与WordBook}
    eclApp:=CreateOleObject(‘Excel.Application’);
    WorkBook:=CreateOleObject(Excel.Sheet’);
    Except
    Application.MessageBox(‘你的机器没有安装Microsoft Excel’,
    ’使用Microsoft Excel’,MB_OK+MB_ICONWarning);
    Exit;
    End;
    Try
    ShowMessage(‘下面演示:新建一个XLS文件,并写入数据,并关闭它。’);
    WorkBook:=eclApp.workbooks.Add;
    EclApp.Cells(1,1):=’字符型’;
    EclApp.Cells(2,1):=’Excel文件’;
    EclApp.Cells(1,2):=’Money’;
    EclApp.Cells(2,2):=10.01;
    EclApp.Cells(1,3):=’日期型’;
    EclApp.Cells(2,3):=Date;
    WorkBook.SaveAS(xlsFileName);
    WorkBook.close;
    ShowMessage(‘下面演示:打开刚创建的XLS文件,并修改其中的内容,然后,由用户决定是否保存。’);
    Workbook:=eclApp.WorkBooks.Open(xlsFileName);
    EclApp.Cells(1,4):=’Excel文件类型’;
    If MessageDlg(xlsFileName+’已经被修改,是否保存?’,
    mtConfirmation,[mbYes,mbNo],0)=mrYes then
    WorkBook.Save
    Else
    WorkBook.Saved:=True; {放弃保存}
    Workbook.Close;
    EclApp.Quit; //退出Excel Application
    {释放Variant变量}
    eclApp:=Unassigned;
    except
    ShowMessage(‘不能正确操作Excel文件。可能是该文件已被其他程序打开,或系统错误。’);
    WorkBook.close;
    EclApp.Quit;
    {释放Variant变量}
    eclApp:=Unassigned;
    end;
    end;
    end.
      

  3.   

    最好用字段1+#**+字段2+...+字段n+#13+一次性加到系统剪贴板中,在由系统剪贴板一次粘贴到Excel中。在数据较多时教快