Dim i As Integer, j As Integer
    Dim xlapp As Excel.Application
    Dim xlbook As Excel.Workbook
    Dim xlsheet As Excel.Worksheet
        
    Set Rs = New ADODB.Recordset
    
    Rs.Open sqlStr, Conn, adOpenKeyset, adLockOptimistic
    
    Savedlg.CancelError = True
    Savedlg.InitDir = App.Path
    Savedlg.Filter = "EXCEL 表格(*.xls)|*.xls"
    Savedlg.ShowSave
    Set xlapp = CreateObject("Excel.Application")
    xlapp.Visible = False
    
    Set xlbook = xlapp.Workbooks.Add
    Set xlsheet = xlbook.Worksheets(1)
    
    xlsheet.Cells.CopyFromRecordset Rs    xlapp.ActiveWorkbook.SaveAs Savedlg.FileName
    xlbook.Close
    xlapp.Quit
    Rs.Close
    Set xlapp = Nothing其中导出的记录在excel中日期型比如"2004-12-13 12:04:24"全部被分成两端显示了,而且一部分数字也被当作日期型处理了,很奇怪,比如3就显示成"1900-1-3",这个怎么解决呢?谢谢

解决方案 »

  1.   

    因为那个cell有个显示格式(样式)的,设定那些cell的格式就好
      

  2.   

    '添加此句就行了
       xlsheet.Cells.NumberFormatLocal = "@"
       xlsheet.Cells.CopyFromRecordset Rs
      

  3.   

    我用的是绑定RecordSet啊,我并不知道要显示哪些field,所以没办法固定的去限制哪些cell显示样式,这个我感觉xlsheet.Cells.CopyFromRecordset Rs
    这个语句应该默认根据我绑定的field类型显示啊,很奇怪
      

  4.   

    to: nanci(☆精灵☆) 
    不行我问题说错了,日期型没有分成两部分"2004-12-13 12:04:24",只是显示成"2004-12-13",后面的去掉了
    我可以在excel中手动的修改显示样式是正确的,但是我希望显示就这样,不用自己去手动修改啊,怎么办?
      

  5.   

    ....晕啊,excel就没有日期型,真痛苦
      

  6.   

    用文本型显示
    xlsheet.Cells.NumberFormatLocal = "@"