Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
老师好,按您给整合的导出数据按钮命令代码都实现了预期的功能,现在想拓展一下,对导出的表格设置一些样式(网格线,字体,颜色,对齐方式等) 把这些设置样式的代码加进去后,也不报错,就是导出表的时候,导出的表格没有达到预期设定的样式,老师给看看样式文件代码有啥问题
咱们是这样的,定义的dt变量 Dim dt As Table = Tables("报表形式导出表格_table1")是窗口中的作为预览用和后面导出折叠模式的动态表,而导出的表Sheet也是随窗口中的动态表而变化导出的表名和数据,咱们就是想在导出的动态表名和数据中进行设置表样式,最后落脚点就是下面代码的dt 我琢磨了好多遍这个动态dt这么写 ,另外老师看看表样式的代码放置位置对不对,请老师看看代码问题出在哪儿 谢谢老师
' Sheet(dt.Rows.Count - 1 , Lms.length - 1).Style = Style
Sheet(Tables("& name & ").Rows.Count - 1 , Lms.length - 1).Style = Style
'下面是导出数据按钮命令代码
Dim dlg As New SaveFileDialog
dlg.filter = "Excel文件|*.xls"
dlg.OverwritePrompt = True '弹出覆盖警告
If dlg.ShowDialog = DialogResult.OK Then
'定义点击不同单选框按钮时对应的列名显示代码
Dim
lms() As String
Dim
szs() As Integer
If
e.Form.Controls("导出理论数据").Checked = True Then
lms = {"序号", "项目构成", "单位", "理论用量", "理论单价", "理论合价", "备注"} '要导出的列名
szs = {45, 200, 65, 85, 85, 100, 250} '对应的列宽
Else
If e.Form.Controls("导出投标数据").Checked = True Then
lms = {"序号", "项目构成", "单位", "投标用量", "投标单价", "投标合价", "备注"} '要导出的列名
szs = {45, 200, 65, 85, 85, 100, 250} '对应的列宽
Else
If e.Form.Controls("导出理论数据").Checked = False And
e.Form.Controls("导出投标数据").Checked = False Then
MessageBox.Show("请选择导出数据的形式:是导出理论数据 还是导出投标数据")
End
If
'下面代码都是定义导出数据表代码
Dim
dt As Table = Tables("报表形式导出表格_table1")
Dim
Book As New XLS.Book '定义一个Excel工作簿
Dim
Sheet As XLS.Sheet
'下面代码是定义表样式代码
'以下是定义单元格字体颜色及表格线的颜色代码代码代码
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.ForeColor = Color.black '设置样式的字体颜色
Style.BorderColorTop = Color.black '设置单元格顶部表格线颜色
Style.BorderColorBottom = Color.black '设置单元格底部表格线颜色
Style.BorderColorLeft = Color.black '设置单元格左侧表格线颜色
Style.BorderColorRight = Color.black '设置单元格右侧表格线颜色
'定义复选组合框列表选择代码
Dim
ckl As WinForm.CheckedListBox = e.Form.Controls("lbk")
Dim
nms As New List(Of String)
For
i As Integer = 0 To ckl.Items.count - 1 '获取已经勾选的表名
If ckl.GetItemChecked(i) Then
nms.Add(ckl.Items(i))
End If
Next
If
nms.Count = 0 Then
MessageBox.Show("至少要选择一个要导出的表名", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End
If
For
Each name As String In nms
dt.Fill("se lect *,用量 as 理论用量 ,单价 as 理论单价,合价 as 理论合价,报价调整1 as 投标用量,报价调整2 as 投标单价,报价调整3 as 投标合价
from {" & name & "}", True)
Dim st As New InlineTreeSetting
st.ParentCol = "科目编码"
st.ChildCol = "项目构成"
st.SortCol = "sysgrdtreesort"
st.AggregateCols = {"合价|报价调整3"}
st.UseStyle = True
st.ExpandTo = -1
dt.ShowGridTree(st)
dt.Cols("科目编码").Visible = False
Sheet = Book.Sheets.Add(name) '根据勾选表名动态增加工作表
'定义导出表的表结构代码
For c As Integer = 0 To lms.length - 1
Sheet(0, c).Value = lms(c) '指定列标题
Sheet.Cols(c).Width = szs(c) '指定列宽
Next
'定义导出表的数据填充代码
For r As Integer = 0 To dt.Rows.Count - 1 '填入数据
Dim rw As Row = dt.rows(r)
For c As Integer = 0 To lms.length - 1
If dt.GridTreeVisible Then '如果处于折叠模式
If lms(c) = "合价" Then
Sheet(r + 1, c).Value =
rw.GetValue("合价")
ElseIf lms(c) = "项目构成" Then
Sheet(r + 1, c).Value =
New String(" ", rw.Hierarchy * 2) & rw("项目构成")
Else
Sheet(r + 1, c).Value =
rw(lms(c))
End If
Else
Sheet(r + 1, c).Value =
rw(lms(c))
End If
Next
Next
'定义数据对齐代码
Style.AlignHorz = XLS.AlignHorzEnum.Center'数据居中对齐
Style.AlignVert = XLS.AlignVertEnum.Center'数据居中对齐
' Sheet(dt.Rows.Count - 1 ,
Lms.length - 1).Style = Style
Sheet(Tables("& name & ").Rows.Count - 1 , Lms.length
- 1).Style = Style
'打开工作簿
Book.Save(dlg.FileName)
Dim Proc As New Process
Proc.File = dlg.FileName
Proc.Start()
Next
End If