已经成功的完成了将Excel的数据导入到了StringGrid。
是一张学生信息表的内容,将学生信息存在Excel中,导入到StringGrid。
其中有一项属性是学生学号,是“00*****”的七形式。在Excel中只显示“*****”后面的五位,前面的两个0不会显示。然后我在Excel的单元格属性中设置自定义为“0000000”,然后Excel的显示就没有问题了,但是导入StringGrid后,在StringGrid的显示依旧是“*****”后面的五位,前面的两个0依旧被省去了。我的问题就是:如何设置才能将StringGrid的显示是“00*****”完整的七位?谢谢各位了!

解决方案 »

  1.   

    Excel的格式要设成文本的,不行就自己写个函数LPad,只要不够七位左边补0.
      

  2.   

    在导出数据前,先把数据的格式修改成 文本Cells.Item[行号,列号].NumberFormatLocal:='@'; 
      

  3.   

    设置EXCEL该格式为文本....一二楼说的没错.
    同意
      

  4.   

    呵呵,一楼说的更没错.可以在STRINGGRID中,按你给的格式导出.
    前面补位.呵呵
    var
     str:string;
    begin
      str:=tmp;   //tmp为EXCEL该列传来的值
      str:=tmp.StringOfChar('0',7-str.Length())+str;       //A
    end;
    ===================================在你得到EXCEL该列值的时候,你要写入STRINGGRID中时,加上A句就行了.
      

  5.   

    sanguomi,能再详细一些么?
    是再导入数据之前   
    for i:=1 to StringGrid1.ColCount do
       begin
         for j:=1 to StringGrid1.RowCount do
         begin
            ExcelWorksheet1.Cells.Item[i,j].NumberFormatLocal:='@';
            StringGrid1.Cells[i,j]:=ExcelWorksheet1.Cells.Item[j,i];
         end
       end;是这样么?
      

  6.   

    感谢上面几位的方法,我试过设置Excel的单元格格式为文本,确实有效。
    但是问题是,这样一来每次导入都要去手动设置Excel的单元格格式,比较麻烦。
    能在Delphi的程序中用程序设置么?希望能给个代码...不胜感激。
      

  7.   

    给了啊....不用变动其它,就是写入STRINGGRID的值时,给这个值补0.