Foxtable(狐表)用户栏目专家坐堂 → [求助]如何用代码控制日期列输出的格式


  共有3581人关注过本帖树形打印复制链接

主题:[求助]如何用代码控制日期列输出的格式

帅哥哟,离线,有人找我吗?
瞩望星空
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
[求助]如何用代码控制日期列输出的格式  发帖心情 Post By:2014/6/2 8:56:00 [只看该作者]

本人想参照帮助(http://www.foxtable.com/help/topics/1148.htm)最后部分,关于用代码控制日期列的命令,
来控制使用模板文件的日期列格式,代码如下,但没有效果,请帮助修改。

Dim dt As Table = Tables("交货记录")
Dim Book As New XLS.Book(ProjectPath & "Attachments\交货记录.xls")  '使用模板导出
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表

Dim dlg As new SaveFileDialog
dlg.Filter="excel文件|*.xls"

If dlg.ShowDialog = DialogResult.OK Then
    Dim fl As String = dlg.FileName

'以下三行参照帮助中控制日期列导出
代码
    Dim Style As XLS.Style = Book.NewStyle '定义新样式
    Style.Format = "yyyy-MM-dd"
    Sheet.Cols(dt.Cols("制单日期").Index).Style = Style
'Sheet.Cols(dt.Cols("制单日期").Index+1).Style = Style   '改成这样也无效
    Book.Build() '生成细节区
    Book.Save(fl) '保存工作簿
    
    Dim Proc As New Process '打开工作簿
    Proc.File = fl
    Proc.Start()
Else
    Return 'Nothing
End If

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:xls模板导出.table

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:交货记录.xls
 

[此贴子已经被作者于2014-6-2 23:00:17编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  2楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2014/6/2 11:32:00 [只看该作者]

你想得太复杂了,日期控制代码根本不需要,只要把模板的日期单元格式设置为需要的日期格式就可以了.

 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2014/6/2 11:42:00 [只看该作者]

在模板中设置日期格式可以达到这个效果。
但是,帮助中也提供了另一种处理方法,并且帮助中的例子是有效的。
只是我自己去应用就无效了,想学一下。

 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2014/6/2 22:22:00 [只看该作者]

自己顶一下


 回到顶部
帅哥哟,离线,有人找我吗?
sloyy
  5楼 | QQ | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2193 积分:13908 威望:0 精华:2 注册:2012/2/25 10:59:00
  发帖心情 Post By:2014/6/2 23:31:00 [只看该作者]

你用代码再怎么设置,只要你套用了模板,就以模板的格式为最后标准,所以.....

 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2014/6/3 8:48:00 [只看该作者]

我试过加代码不能控制使用模板输出XLS的日期列格式。

我是给这段帮助说明吸引过来的:

 

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

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

 

如果确实不行,狐表的这段帮助文档,应加一句“此方法不适合用于使用模板输出Excel文件”。

不知狐爸能否看到?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/3 9:03:00 [只看该作者]

 回复6楼,代码先后的问题。你应该在等报表build以后再设置excel的style的,保证有效。


 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2014/6/3 9:50:00 [只看该作者]

回复七楼,这三句代码(定义dt可以放在最前面)我已测试放在不同的位置,都无效。

一楼有例子,能不能帮我测试一下。

 

 

改成这样也无效:

 Book.Build() '生成细节区
 Dim Style As XLS.Style = Book.NewStyle '定义新样式
 Style.Format = "yyyy-MM-dd"
 Sheet.Cols(dt.Cols("制单日期").Index).Style = Style

 Book.Save(fl) '保存工作簿

[此贴子已经被作者于2014-6-3 10:31:15编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/6/3 10:30:00 [只看该作者]

 需要这样改

 


    Book.Build() '生成细节区
    Dim Style As XLS.Style = Book.NewStyle '定义新样式
    Style.Format = "yyyy-MM-dd"
    Sheet = Book.Sheets(0)
    For i As Integer = 2 To sheet.Rows.Count - 1
        sheet(i,dt.Cols("制单日期").Index).style = style
    Next
    Book.Save(fl) '保存工作簿


 回到顶部
帅哥哟,离线,有人找我吗?
瞩望星空
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:531 积分:4727 威望:0 精华:0 注册:2013/4/20 20:08:00
  发帖心情 Post By:2014/6/3 10:40:00 [只看该作者]

可以了,非常感谢!

最好把9楼的代码补充到帮助文档中。


 回到顶部