以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  依据订单表生成的交叉表列标题有问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=1058)

--  作者:唐尸三摆手
--  发布时间:2008/11/4 21:26:00
--  依据订单表生成的交叉表列标题有问题
依据订单表,按照行标题为产品,列标题为日期,生成统计订单数量的交叉表。
此时,列标题为“2008-10-31”、“2008-11-01”格式,但是将此交叉表结果导出到access及execl文件,列标题均
变成了r**1、r**2这种样式,请问能否将FOXTABLE所见结果原样导出?
--  作者:狐狸爸爸
--  发布时间:2008/11/4 21:43:00
--  
没有办法,因为2008-10-31不是一个有效的列名
用excel报表输出统计结果吧。
--  作者:唐尸三摆手
--  发布时间:2008/11/4 21:44:00
--  
excel报表输出统计结果,可是列名称不是固定的呀
--  作者:狐狸爸爸
--  发布时间:2008/11/4 21:46:00
--  
可以用代码修改模板,然后再build啊
--  作者:唐尸三摆手
--  发布时间:2008/11/4 21:49:00
--  
能否提供简单实例
--  作者:狐狸爸爸
--  发布时间:2008/11/4 22:23:00
--  
不用模板,直接用代码生成即可。

下面的代码完全通用,只需改一下表名:



Dim dt As Table = Tables("表名")

Dim Book As New XLS.Book \'定义一个Excel工作簿

Dim Sheet As XLS.Sheet = Book.Sheets(0) \'引用工作簿的第一个工作表

For c As Integer = 0 To dt.Cols.Count -1 \'添加列标题

    Sheet(0, c).Value = dt.Cols(c).Caption

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

Next

\'打开工作簿

Book.Save("c:\\reports\\test.xls")

Dim Proc As New Process

Proc.File = "c:\\reports\\test.xls"

Proc.Start()


--  作者:唐尸三摆手
--  发布时间:2008/11/5 12:11:00
--  
成功,又学了一招,谢谢他爹啦
[此贴子已经被作者于2008-11-5 12:10:49编辑过]