以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  位置问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=69494)

--  作者:q2649295605
--  发布时间:2015/6/6 8:58:00
--  位置问题
Dim dt As Table = Tables("订单")
Dim
 Book As New XLS.Book \'定义一个Excel工作簿
Dim
 Sheet As XLS.Sheet = Book.Sheets(0\'引用工作簿的第一个工作表
Dim
 Style As Xls.Style = Book.NewStyle \'新建一个样式
Style.BackColor = Color.Red \'样式的背景颜色设为红色
For
 c As Integer = 0 To dt.Cols.Count -1 \'添加列标题
    Sheet(0, c).Value = dt.Cols(c).Name
Next
For
 r As Integer = 0 To dt.Rows.Count - 1 \'填入数据
    
For c As Integer = 0 To dt.Cols.Count -1
        Sheet(r +1, c).Value = dt.rows(r)(c)
    Next
    If
 dt.rows(r)("折扣") >= 0.15 Then \'如果折扣大于等于0.15
        Sheet(r + 1,dt.Cols("折扣").Index).Style = Style \'设置折扣单元格的样式
    
End If
Next

\'打开工作簿

Book.Save("c:\\reports\\test.xls")
Dim
 Proc As New Process 
Proc.File = "c:\\reports\\test.xls"
Proc.Start()



你如果细心的话,你会发现生成的Excel文件中,日期列内容全变成了数字。
你可以在Excel中手工将日期列的格式设为日期型,但这不是一个好方法。
最好是修改上面的导出代码,在打开工作簿的代码之前插入下面几行:

Dim St2 As XLS.Style = Book.NewStyle
St2.Format = "yyyy-MM-dd"
Sheet.Cols(dt.Cols("日期").Index).Style = st2



具体放在什么地方???

我放了好几个地方  都不对




[此贴子已经被作者于2015/6/6 8:59:13编辑过]

--  作者:Bin
--  发布时间:2015/6/6 9:00:00
--  
If dt.rows(r)("折扣") >= 0.15 Then \'如果折扣大于等于0.15
        Sheet(r + 1,dt.Cols("折扣").Index).Style = Style \'设置折扣单元格的样式
    
End If

替换原来这段即可

--  作者:q2649295605
--  发布时间:2015/6/6 9:05:00
--  
还是不对!!导出的还不是日期格式
[此贴子已经被作者于2015/6/6 9:05:47编辑过]

--  作者:Bin
--  发布时间:2015/6/6 9:13:00
--  
上例子吧.说明你判断的列名位置不对