以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]导出数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=123853)

--  作者:湛江智
--  发布时间:2018/8/24 17:39:00
--  [求助]导出数据
 帮助文件————导出数据
下面代码,当日期列单元格为空时,导出的excle表的单元格 日期是1900-01-00,下面代码怎么修改呢?谢谢

Dim dt As Table = Tables("订单")
Dim
nms() As String = {"产品","客户","数量","单价","金额","日期"} \'要导出的列名
Dim
caps() As String = {"产品名称","用户名称","数量","单价","金额","日期"} \'对应的列标题
Dim
szs() As Integer = {100,100,80,80,80,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




[此贴子已经被作者于2018/8/24 17:39:48编辑过]

--  作者:新福星
--  发布时间:2018/8/24 20:11:00
--  

在写入数据时的这新代码中加入判断日期字段的语句,如果为空,则在Excel对应单元写入空值即可.

 

For r As Integer = 0 To dt.Rows.Count - 1

    For c As Integer = 0 To nms.length -1
     if nms(c)="日期" then

       if dt.rows(r).isnull(nms(c)) then
          Sheet(r +1, c).Value =nothing

       else

          Sheet(r +1, c).Value = dt.rows(r)(nms(c))

      end if

 

      else

       Sheet(r +1, c).Value = dt.rows(r)(nms(c))
    end if

    Next
Next


--  作者:有点蓝
--  发布时间:2018/8/24 20:17:00
--  
For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    Dim dr As Row = dt.rows(r)
    For c As Integer = 0 To nms.length -1
        If dr.IsNull(nms(c)) = False
            Sheet(r +1, c).Value = dr(nms(c))
        End If
    Next
Next