我是做电力的,有个字段是10/5,导出到excel的时候变成了10月5日,我用
Sheet.Cells[jCount + 1, iCount + 1].NumberFormat:='@'; 不行
用Sheet.Cells[jCount + 1, iCount + 1].NumberFormatLocal:='@';也不行
,加单引号也不行,不知道还有没有其他办法。
   另外,我想给导出的excel加个标题,比如“XX市XXXX年XX月XX报表”。
  以上两个问题希望达人帮忙,分不够我再加。

解决方案 »

  1.   

    Sheet.Cells[jCount + 1, iCount + 1].NumberFormat:='@'
    这句话的后半部分是对的,设置为 @ 就是文本格式,
    就是不知道其他地方有没问题,自己再仔细检查一下吧。
      

  2.   

    另外,我想给导出的excel加个标题,比如“XX市XXXX年XX月XX报表”。这个要用到合并单元格(.Merge),可以参考一下我的文章。http://blog.csdn.net/swayi21/archive/2004/08/06/67087.aspx
      

  3.   

    设置一下EXCEL的单元格格式就行, 你可以先作一个EXCEL的模板,设置好标题,再在你导入日期数据的位置上设置为文本格式,然后就一切OK
      

  4.   

    就我所知,10/5 是个公式,要么就是个日期表示,excel默认会转化它的显示的,你应该在输入时,用类似如下的:Sheet.Cells[jCount + 1, iCount + 1] := '''' + '10/5';大概如此,当成字符串,应该可以的,不用其它格式化
      

  5.   

    我不知道什么时候像10/5这样的字段会出现,怎么能写死呢?
    如果把单元格里的数据类型设置好是不是就不会出现我说的情况了呢?要在程序里控制,怎么控制呢?
    你说的:Sheet.Cells[jCount + 1, iCount + 1] := '''' + '10/5';这样不对,要是出现15/5怎么办?
    老实说,这个不是除法表达式,是我这个业务里的一个专业词汇,叫互感器的变比
      

  6.   

    >>要是出现15/5怎么办?有什么区别呢?? 你的选择就是,要显示成一个不变的字符串,还是显示一个计算公式??
      

  7.   

    我觉得关键问题在于“单元的格式”
    我们可以手动在EXCEL输入10/5,回车,就变成了日期,
    这是EXCEL的自动处理,如果你先设置好单元的格式为文本,EXCEL就不会再处理了。所以,我希望你在赋值前已经设置单元的格式为'@', :D
      

  8.   

    我用的方法,你试试//设置单元格的日期显示格式为'月/日/年'
    Worksheet.Cells.Item[row,6].NumberFormatLocal:='M/D/YYYY';
    Worksheet.Cells.Item[row,6]:=datasource1.DataSet.fields[3].AsString;
    Worksheet.Cells.Item[row,5]:='贵州省';