我在导入数据到Excel时发现为(00123)的字段在Excel中显示的是(123),但要求不能这样.函数如下:Procedure TDoMakeJSD_DXForm.PrintToExcel(dataset:Tdataset);
var
  i:integer;
  s:Tstringlist;
  tmp:string;
  filename:string;
begin
  if not dataset.Active  then
  begin
    MessageDlg('请打开数据!',mtinformation,[mbYes],0);
    exit;
  end;  s:=tstringlist.create;  dataset.DisableControls;
  Screen.Cursor:=crHourGlass;
  try
    tmp:='';
    for i:=0 to dataset.fields.count-1 do
         tmp:=tmp+dataset.fields[i].DisplayLabel+#9;(问题在这里,应该加入什么符号)    s.add(tmp);    dataset.first;
    while not dataset.eof do
    begin
      tmp:='';
      for i:=0 to dataset.fields.count-1 do
        tmp:=tmp+(dataset.fields[i].asstring)+#9;
      s.Add(tmp);      dataset.next;
    end;
    Randomize;
    filename := 'D:\'+ FloatToStr(Random(100000000))+'.xls';
    SaveDialog1.filename := filename;
    s.savetofile(filename);    MessageDlg('导出数据成功!',mtinformation,[mbYes],0);  finally
    s.free;
    dataset.EnableControls;
    Screen.Cursor:=crArrow;
   end;
end;

解决方案 »

  1.   

    在Excel中默认它将(00123)视为数字,所以不能显示(00123),只有将EXCEL单元格格式改为文本才能显示这种效果。
      

  2.   

    在“00123”前加个单引号
    如原来写的是:tmp:=tmp+dataset.fields[i].DisplayLabel+#9;
    现改成:tmp:=tmp+''''+dataset.fields[i].DisplayLabel+#9;
      

  3.   

    这个是在Excel设置好该字段为文本字段后,再导入到Excel
      

  4.   

    sheet1.column[1].numberformat:='@';
    好象就是这样的。你需要哪列是文本,可以把1改成哪列