以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  导出excel时,日期列出错了,求助?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87679)

--  作者:zsslly
--  发布时间:2016/7/16 20:34:00
--  导出excel时,日期列出错了,求助?
为什么我导出excel时,日期列中的空白单元格中都出现了错误的时间了,如图"1900-01-00"对应的狐表中的单元格都是空白的,求助?怎么办?
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20160716202633.jpg
图片点击可在新窗口打开查看

--  作者:zsslly
--  发布时间:2016/7/16 20:34:00
--  
想要和狐表一样,有时间就有时间,没有时间就空白,求老现指点?
--  作者:zsslly
--  发布时间:2016/7/17 9:16:00
--  
今天老师休息,有没有大侠指点一下?
--  作者:狐狸爸爸
--  发布时间:2016/7/18 8:46:00
--  
我测试没有问题,您把这个表发上来看看。
--  作者:程兴刚
--  发布时间:2016/7/18 10:48:00
--  
判断时期列,按大于1900-01-01的条件导出,或将其改写为空白!
--  作者:大红袍
--  发布时间:2016/7/19 1:15:00
--  
 我测试没问题。你是如何导出的?
--  作者:zsslly
--  发布时间:2016/7/24 0:31:00
--  
如下,是我导出的代码:

Dim dt As Table = Tables("峰和设计部_table1")
Dim nms() As String = {"接单日期","量房时间","市场部","设计师","操作性","客户姓名","联系电话","小区地址","楼号","区域","面积","平面定金","立面定金金额","预收设计费","当月预签","预签时间","户型","设计部客户操作备注"} \'要导出的列名 
Dim caps() As String = {"接单日期","量房时间","市场部","设计师","操作性","客户姓名","联系电话","小区地址","楼号","区域","面积","平面定金","立面定金金额","预收设计费","当月预签","预签时间","户型","设计部客户操作备注"} \'对应的列标题 
Dim szs() As Integer = {90,90,70,70,70,80,100,90,80,70,50,80,80,85,80,90,40,120} \'对应的列宽 
Dim Book As New XLS.Book \'定义一个Excel工作簿 
Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表 
Dim st As XLS.Style = Book.NewStyle \'日期列的显示格式 
st.Format = "yyyy-MM-dd" 
For c As Integer = 0 To nms.length -1 
    Sheet(0, c).Value = caps(c) \'指定列标题
    Sheet.Cols(c).Width = szs(c) \'指定列宽
    If dt.Cols(nms(c)).IsDate Then \'如果是日期列
        Sheet.Cols(c).Style = st \'设置显示格式
    End If
Next
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next
Dim dlg As New SaveFileDialog \'定义一个新的SaveFileDialog
dlg.Filter= "Excel文件|*.xls" \'设置筛选器
If dlg.ShowDialog = DialogResult.Ok Then
    Book.Save(dlg.FileName)
    Dim Proc As New Process
    Proc.File = dlg.FileName
    Proc.Start()
End If

--  作者:狐狸爸爸
--  发布时间:2016/7/24 8:14:00
--  
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    Next
Next

改为:
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    For c As Integer = 0 To nms.length -1
        if dt.rows(r).Isnull((nms(c))) = False
             Sheet(r +1, c).Value = dt.rows(r)(nms(c))
        end if
    Next
Next

也就是跳过空值

--  作者:zsslly
--  发布时间:2016/7/24 9:53:00
--  
感谢爸爸,谢谢!