以文本方式查看主题 - 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=97104) |
||||
-- 作者:zhuzhi -- 发布时间:2017/3/6 12:22:00 -- [求助]如何用代码导出不同的excel报表 老师您们好! 我在帮助文档里看到导出EXCEL报表的代码,它是只能实现导出指定的一个模板一个报表名的报表吧?那么如果我有一组数据,如下例: 姓名 份额 张三 1 张三 2 李四 2 李四 2 李四 4 王五 6 王五 7 …… 我能不能修改那段代码,让它自动地,按张三、李四、王五分类汇总,然后自动按王五一张报表叫王五、李四一张报表叫李四,张三一张报表叫张三这样,自动地在指定位置生成几份报表呢? 请教一下有没有实现的办法呢?谢谢! 示例的代码: Dim dt As Table =
Tables("订单") 可不可以加入一个条件判断,比如判断姓名是王五,导出的报表就只包含姓名为王五的数据,生成的表名称也自定义为判断项(即王五呢?) 求老师们赐个思路,十分感谢! |
||||
-- 作者:有点色 -- 发布时间:2017/3/6 12:42:00 -- Dim dt As Table = Tables("表B") for each s as string in dt.DataTable.GetValues("第一列", "第一列 is not null") 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).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 Next \'打开工作簿 Book.Save("d:\\" & s & ".xls") Dim Proc As New Process Proc.File = "d:\\" & s & ".xls" Proc.Start() next |
||||
-- 作者:zhuzhi -- 发布时间:2017/3/8 22:42:00 -- 非常感谢您~~我试着导出之后,发现导出的excel文件里是各种姓名的数据都有,能否应用模板,只让选中数据中姓名为张三的数据套用模板,生成张三这个文件,姓名为李四的数据套用模板,生成李四这个文件……呢?帮助文档里的这个代码,如何能实现这样的功能呢?求老师们帮帮我~~ Dim Book As
New
XLS.Book(ProjectPath
&
"Attachments\\出库单.xls") 是不是要用选取的代码?自动选取符合条件的数据?但我不知道这需要怎样的知识可以做到~~ 谢谢老师们,求您们帮帮我~~~ |
||||
-- 作者:有点色 -- 发布时间:2017/3/8 23:27:00 -- 可以,请上传实例。 |
||||
-- 作者:有点色 -- 发布时间:2017/3/8 23:30:00 -- 如果自己做的话,参考这里
http://www.foxtable.com/webhelp/scr/2626.htm
|
||||
-- 作者:zhuzhi -- 发布时间:2017/3/9 15:47:00 -- 老师您好~~我试着做了一下: Dim Book As New XLS.Book(ProjectPath & "Attachments\\111.xls") \'打开模板 Dim fl As String = ProjectPath & "Reports\\222.xls" Dim Sheet As XLS.Sheet = Book.Sheets(0) Sheet(1,1).Value = "张三" \'写入打印条件 Book.Build() \'生成报表 Book.Save(fl) Dim Proc As New Process Proc.File = fl Proc.Start() 但是我失败了。它并不能完成指定数据的筛选,条件没法子运作~~~而且生成的报表之中,所有被我指定为筛选选项的“姓名”都被改写了~~ 而且,我希望写入条件能像示例那样简便,不用一个个指定它是什么,而是所有不同的“姓名”归类,自动筛选出来。我不知道这个能用什么句式判断出来~~ 我想要将用姓名=张三筛选出来的数据生成的报表自动命名为张三,用姓名=李四筛选后生成的报表里自动命名为李四……但我试着用您给的第一份代码之中,能自动将生成的报表们命名的方法,但是却报错。我不知道可以怎么解决它~~ 我把例子上传,麻烦老师指点我!十分感谢!
|
||||
-- 作者:有点色 -- 发布时间:2017/3/9 16:01:00 --
|
||||
-- 作者:zhuzhi -- 发布时间:2017/3/9 23:03:00 -- 谢谢老师!真的非常有效! 还想请教老师,以我这个例子为例,我要对数据先筛选一道,比如说先选择姓名为李四张三,再使用这个打印代码。好像王五虽然没有数据,但也会生成相应的空报表 请问您有没有办法能让筛除王五后,代码不会生成王五这个空报表呢? 此外,可否只是生成报表,而不打开报表呢? 谢谢您! |
||||
-- 作者:有点色 -- 发布时间:2017/3/10 1:40:00 -- 改一下代码即可
Dim t As Table = Tables("表B") |
||||
-- 作者:zhuzhi -- 发布时间:2017/4/6 22:31:00 -- 老师您好!谢谢您之前的指点。我还是遇到了1个问题,想请教您。 我应用您给我的代码,将报表模板换了一下,但是最终生成的报表,就不能达成张三的报表里只有张三的数据,李四的报表里只有李四的数据。每张报表里,是所有人的数据都产生了一份。 不知道这是为什么呢?我做了项目,把您的代码原封不动复制,就是换了一下报表模板。麻烦您看看,这个案例中窗口里的第二个按钮和它对应的名为花名册的报表模板,我不知道它是怎么出错了,求您指点,十分感谢!
------------------------- 不好意思,我大概知道是什么原因了,请问下写入打印条件的原理是什么呢?谢谢! -------------------------------------------- 不好意思,我调整了写入打印条件,但还是无法正确生成,求老师指点,十分感谢! [此贴子已经被作者于2017/4/6 22:52:55编辑过]
|