以文本方式查看主题 - 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=165347) |
||
-- 作者:cnsjroom -- 发布时间:2021/5/14 16:05:00 -- excel模板中 如何实现第一列是统计总数列 接下来的列是将统计的数据逐行显示呢? excel模板中 如何实现第一列是统计总数列 接下来的列是将统计的数据逐行显示呢? |
||
-- 作者:有点蓝 -- 发布时间:2021/5/14 16:10:00 -- 模板实现不了这种。 1、使用代码手工导出数据,比如:http://www.foxtable.com/webhelp/topics/1148.htm 2、使用专业报表
|
||
-- 作者:cnsjroom -- 发布时间:2021/5/14 17:13:00 -- 回复:(有点蓝)模板实现不了这种。1、使用代码手工导... 一个表会有多个不同的数据类型进行条件判断 多个条件怎么进行添加呢? |
||
-- 作者:有点蓝 -- 发布时间:2021/5/14 17:38:00 -- 这里没有办法使用条件。 |
||
-- 作者:cnsjroom -- 发布时间:2021/5/14 17:42:00 -- 回复:(有点蓝)这里没有办法使用条件。 那使用代码 Dim cmd As New SQLCommand \'cmd.C Dim nms() As String = {"产品","数量","单价","金额","日期"} cmd.CommandText = "Sel ect 产品,数量,单价, 数量 * 单价 As 金额,日期 From {订单} Where 客户 = \'CS01\' " Dim dt As DataTable = cmd.ExecuteReader() Dim Book As New XLS.Book 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 nms.Count -1 Sheet(0, c).Value = nms(c) Next For r As Integer = 0 To dt.DataRows.Count - 1 For c As Integer = 0 To nms.Count -1 Sheet(r +1, c).Value = dt.DataRows(r)(nms(c)) Next Next \'打开工作簿 Book.Save("c:\\reports\\test.xls") Dim Proc As New Process Proc.File = "c:\\reports\\test.xls" Proc.Start() 是否可以实现呢?怎么实现呢 ?老师可否指导一下 或者老师有没有专业报表实现的方法或者例子 我学习一下
[此贴子已经被作者于2021/5/14 17:44:33编辑过]
|
||
-- 作者:有点蓝 -- 发布时间:2021/5/14 17:51:00 -- 就是自己遍历新增行,然后手工给对应单元格填入需要的数据。上面就已经是完整的实现代码 做专业报表先把专业报表这章内容全部看一遍:http://www.foxtable.com/webhelp/topics/1166.htm
|
||
-- 作者:cnsjroom -- 发布时间:2021/5/14 18:39: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.BorderTop = XLS.LineStyleEnum.Thin Style.BorderBottom = XLS.LineStyleEnum.Thin Style.BorderLeft = XLS.LineStyleEnum.Thin Style.BorderRight = XLS.LineStyleEnum.Thin Style.BorderColorTop = Color.Black Style.BorderColorBottom = Color.Black Style.BorderColorLeft = Color.Black Style.BorderColorRight = Color.Black 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) Sheet(r+1,c).Style = Style Next Next \'打开工作簿 Dim St2 As XLS.Style = Book.NewStyle St2.Format = "yyyy-MM-dd" Sheet.Cols(dt.Cols("初始时间").Index).Style = st2 Sheet.Cols(dt.Cols("到期时间").Index).Style = st2 Sheet.Cols(dt.Cols("周期时间").Index).Style = st2 Book.Save("c:\\reports\\test.xls") Dim Proc As New Process Proc.File = "c:\\reports\\test.xls" Proc.Start() 实现效果如下: 怎么实现: 1、新增一行作为表标题行 2、并且将列名行也对应的划线黑线 3、时间对应格式显示正确
[此贴子已经被作者于2021/5/14 18:40:37编辑过]
|
||
-- 作者:有点蓝 -- 发布时间:2021/5/15 8:47:00 -- 1、在第一行录入标题,数据从第2行开始填充 For c As Integer = 0 To dt.Cols.Count -1 \'添加列标题 Sheet(1, 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 +2, c).Value = dt.rows(r)(c) …… 2、列名单元格也加上样式 3、事件列单独添加样式,原因:
Dim St2 As XLS.Style = Book.NewStyle St2.Format = "yyyy-MM-dd" St2.BorderTop = XLS.LineStyleEnum.Thin St2.BorderBottom = XLS.LineStyleEnum.Thin St2.BorderLeft = XLS.LineStyleEnum.Thin St2.BorderRight = XLS.LineStyleEnum.Thin St2.BorderColorTop = Color.Black St2.BorderColorBottom = Color.Black St2.BorderColorLeft = Color.Black St2.BorderColorRight = Color.Black 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) if dt.Cols(c).IsDate Sheet(r+1,c).Style = St2 else Sheet(r+1,c).Style = Style end if Next Next 4、比如函数名称是第一个列,只给第一个列赋值 dim cnt as integer = Sheet.rows.count For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 Sheet(cnt +r, 0).Value = dt.rows(r)(c) Sheet(cnt+r,0).Style = Style Next |
||
-- 作者:cnsjroom -- 发布时间:2021/5/15 11:40:00 -- 回复:(有点蓝)1、在第一行录入标题,数据从第2行开... 感谢老师的耐心指导 根据你的指导 当前完成如下: 麻烦老师继续指导下如何合并单元格 部分线框不绘制 某列直接显示序号问题!谢谢! Dim dt As Table = Tables("计划事件") Dim dt1 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.BorderTop = XLS.LineStyleEnum.Thin Style.BorderBottom = XLS.LineStyleEnum.Thin Style.BorderLeft = XLS.LineStyleEnum.Thin Style.BorderRight = XLS.LineStyleEnum.Thin Style.BorderColorTop = Color.Black Style.BorderColorBottom = Color.Black Style.BorderColorLeft = Color.Black Style.BorderColorRight = Color.Black Style.AlignHorz=XLS.AlignHorzEnum.Center Style.AlignVert=XLS.AlignHorzEnum.Center Dim Style2 As Xls.Style = Book.NewStyle \'新建一个合并居中样式 \'如何设定这个样式为合并居中呢? Dim St2 As Xls.Style = Book.NewStyle \'新建一个时间格式化样式 St2.Format = "yyyy-MM-dd" St2.BorderTop = XLS.LineStyleEnum.Thin St2.BorderBottom = XLS.LineStyleEnum.Thin St2.BorderLeft = XLS.LineStyleEnum.Thin St2.BorderRight = XLS.LineStyleEnum.Thin St2.BorderColorTop = Color.Black St2.BorderColorBottom = Color.Black St2.BorderColorLeft = Color.Black St2.BorderColorRight = Color.Black St2.AlignHorz=XLS.AlignHorzEnum.Center St2.AlignVert=XLS.AlignHorzEnum.Center St2.FontSize = 8 For r As Integer = 0 To dt.Rows.Count - 1 \'填入数据 For c As Integer = 0 To dt.Cols.Count-1 Sheet(0, c).Value ="统计表" \'第一行写入表标题(从第一列到最后一列) Sheet(0, c).style=style2 Sheet(1, c).Value = dt.Cols(c).Name \'第二行写入列标题 If r<2 Then Sheet(r +2, c).Value = dt.rows(r)(c) \'第三行开始填充数据 Sheet(r+2,c).Style = Style Else Sheet(r +1, c).Value = dt.rows(r)(c) \'第三行开始填充数据 End If If dt.Cols(c).IsDate Sheet(r+1,c).Style = St2 Else Sheet(r+1,c).Style = Style End If Next Next For r1 As Integer = 0 To dt1.Rows.Count - 1 \'填入数据 Dim cnt As Integer = Sheet.rows.count For c1 As Integer = 0 To dt.Cols.Count-1 Sheet(r1+2, 1).Value = dt1.rows(r1)(0) ’在 计划 列填入 词典 表里面的 第一列 的值 If r1<2 Then If dt.Cols(c1).IsDate Sheet(r1+2,c1).Style = St2 Else Sheet(r1+3,c1).Style = Style End If Else If dt.Cols(c1).IsDate Sheet(r1+1,c1).Style = St2 Else Sheet(r1+2,c1).Style = Style End If End If Next Next Book.Save("c:\\reports\\test.xls") Dim Proc As New Process Proc.File = "c:\\reports\\test.xls" Proc.Start() 运行效果如图: 怎么修改上述红色部分代码 : 1、实现第一行标题行 自动合并单元格并将标题居中呢?(合并单元格数量等于列标题数量) 2、如何根据计划咧里面的值数量 对应新增序号到周期列里 如:1、2、3、4……18 3、解决为什么部分单元格没有绘制边框线呢? 词典表数据: 计划事件表数据: [此贴子已经被作者于2021/5/15 11:43:24编辑过]
|
||
-- 作者:有点蓝 -- 发布时间:2021/5/15 11:47:00 -- 合并单元格:http://www.foxtable.com/webhelp/topics/1153.htm 遍历的时候给指定列赋值索引,如:Sheet(r1+2, 5).Value =r1 没有遍历到这些单元格赋值,自然就没有设置边框
|