将数据导出到excel中发现有些数据将0自动去掉了
详细情况: 导出到excel中如果数据为00123456那么在excel单元格里显示的是123456
我需要高手帮忙代码怎么设置我是用ExcelApp:= CreateOleobject('Excel.Application');
来设置导出的,请问我该怎么设置才能使的数据不要将0舍去

解决方案 »

  1.   

    有没有针对excel格式的代码来处理
    免得每次都+'
      

  2.   

    只能在excel中设置显示格式了。
    它把你导出的当作整数了,设置字符串应该没有问题。
      

  3.   

    之前我做了一个导出到EXCEL的也发现这个问题,原来这么回事,还以为是自己做错了什么呢谢谢高人指点
      

  4.   

    修改EXCEL的单元格格式为文本格式
      

  5.   


    procedure TFrmMenu.ComeBackExcel(x1, y1, x2, y2: integer;FileName,WorkBookName:string;IsChange:boolean=true);
      Var  RepSpace : string;
           i,j:integer ;
    begin                                                   //更新单元格格式为文本
      RepSpace:=GetRepRange(x1,y1)+':'+GetRepRange(x2,y2);
      MyExcel := CreateOleObject('Excel.Application');
      MyExcel.Visible := false;
      MyWorkbook := MyExcel.Workbooks.Open(FileName);
      MyExcel.WorkSheets[''+WorkBookName+''].Activate;
      MyExcel.Range[RepSpace].Select;
      if IsChange then
        MyExcel.Selection.NumberFormat := '@'
      else
        MyExcel.Selection.NumberFormat := 'G/通用格式';
      if IsChange then                     // 这里可以手动修改你要的值,比如将12345 修改为 00012345  
      begin                                
        For i:=1  to AccountCount + 1 do
        begin
          For j:=1 to  LanguageCount + 1 do
          begin
            RepSpace := MyExcel.Cells[i,j].Value;
            if StrToIntDef(RepSpace,-1) <> -1 then  
                MyExcel.Cells[i,j].Value := RepSpace;
          end;
        end;
      end;  
      MyExcel.DisplayAlerts:=false;
      MyExcel.save;
      MyExcel.DisplayAlerts:=true;
      MyExcel.quit;
    end;
                           //总行数       总列数              //文件名      //工作薄名         
    调用  ComeBackExcel(1,1,AccountCount,LanguageCount + 1,PreFileName,PreWookBookName,false);
    楼主可以试一下,如果不对,别骂我呀,水平有限得很
      

  6.   


    procedure TForm1.Button1Click(Sender: TObject);
    var
      ExcelApp: Variant;
    begin
      ExcelApp:=CreateOleObject('Excel.Application');
      ExcelApp.Visible:=True;
      ExcelApp.WorkBooks.Add;
      ExcelApp.WorkSheets[1].Activate;
      ExcelApp.WorkBooks[1].WorkSheets[1].range['A:A'].numberformatlocal:='@';//對A:A欄設置
    end;
      

  7.   

    稻草人兄,好象你回答的跟我问的不是同一个吧,
    我问怎样代码设置Excel格式使得000123不会在excel显示成123
      

  8.   

    我说错了么?
    就是修改EXCEL单元格格式为文本就可以了
      

  9.   

                           //总行数       总列数              //文件名      //工作薄名         
    调用  ComeBackExcel(1,1,AccountCount,LanguageCount + 1,PreFileName,PreWookBookName,false);
    稻草人兄,请问你这个PreWookBookName,不该叫工作薄名,应该是worksheet吧,我翻译worksheet是指工作表,不知道我有没有说错?
    还有就是MyExcel.Selection.NumberFormat := 'G/通用格式';
    MyExcel.Selection.NumberFormat := '@'----------这两句话看的不是很清楚.
    'G/通用格式'和'@'格式集体指何格式,有啥区别????
      

  10.   

    1。PreWookBookName 只是个名称,你爱怎么翻译就怎么翻译
    2。你自己打开一个excel ,看一下里面的单元格格式都有哪些
    ‘@’ 就是文本,'G/通用格式' 就是常规
      

  11.   

     MyExcel.Selection.NumberFormat := '@'
    稻草人兄,我 想问下怎么在excelwork设置excel格式
    好象MyExcel.Selection.NumberFormat := '@'//这句看起来好象是设置选择的格式,
    我想设置某个excel文件的格式怎么设置?
      

  12.   

    呵,你认真看一下这段代码嘛
      RepSpace:=GetRepRange(x1,y1)+':'+GetRepRange(x2,y2); //指定EXCEL需要修改的单元格
      MyExcel := CreateOleObject('Excel.Application');
      MyExcel.Visible := false;
      MyWorkbook := MyExcel.Workbooks.Open(FileName);      //指定EXLCE工作薄
      MyExcel.WorkSheets[''+WorkBookName+''].Activate;     
      MyExcel.Range[RepSpace].Select;
    //这句话就是选中 RepSpace 范围内的所有单元格
      

  13.   

    我知道了,谢谢啊,
    你教了我设置RepSpace 范围内的所有单元格格式
    我自己又知道了怎么设置excel workbook的格式,加上现在你又教会了设置某某范围的格式,
    所以我以后想怎么设置格式就怎么设置格式
      

  14.   


    function GetRepRange(x, y: integer): string;      //选中单元格,设置属性
      var   fX,fY:string;   
    begin
      if   y<=0   then
         fX:='A';
      if   y<=26   then
         fX   :=   chr(64+y);
      if   y>26   then
         fX:=chr(64+(y   div   26))+chr(64+(y   mod   26));
      fY:=IntToStr(x);
      Result:=fX+fY;
    end;