Foxtable常用代码汇总
1 Col 打开列窗口With Tables("员工")
.Cols("照片").OpenWindow()
.Cols("备注").CloseWindow()
End With 按钮或菜单
2 Col 关闭列窗口With Tables("员工")
.Cols("照片").OpenWindow()
.Cols("备注").CloseWindow()
End With 按钮或菜单
3 Col 移动列到指定位置With Tables("订单")
.Cols("日期").Move(0)
.Cols("客户").Move(1)
.Cols("产品").Move(2)
End With 按钮或菜单将日期、客户、产品移到前三列的位置
4 Col 冻结列CurrentTable.Cols.Frozen = 2 按钮或菜单冻结前两列
5 Col 取消冻结列CurrentTable.Cols.Frozen = 0 按钮或菜单
6 Col 从Table中移除指定的列If Tables("订单").Cols.Contains("折扣") Then
Tables("订单").Cols.Remove("折扣")
End If 按钮或菜单在订单表中移除折扣列
7 Col 一次移除多列Tables("订单").Cols.Remove("折扣","金额") 按钮或菜单
8 DataCol 锁定某表某列DataTables("订单").DataCols("折扣").AllowEdit = False
按钮或菜单
9 DataCol 取消锁定某表某列DataTables("订单").DataCols("折扣").AllowEdit = True
按钮或菜单
10 DataCol 动态地修改表达式列的计算公式
DataTables("订单").DataCols("金额").Expression = "数量 * 单价"
DataTables("订单").DataCols("金额").Expression = "数量 * 单价 * (1 - 折扣)" 按钮或菜单
Expression属性只对表达式列有效
11 DataCol 返回列的名称For Each dc As DataCol In DataTables("订单").DataCols Output.Show(https://www.wendangku.net/doc/5716222204.html,)
Next 按钮或菜单列出订单表中所有列的名称
12 DataCol 增加临时列,并可给临时列设置表达式 DataTables("订单").DataCols.Add("金额", GetType(Double), "[数量] * [单价] * (1 - [折扣])") 按钮或菜单
通过代码增加的临时列,在重新打开项目文件后,将不复存在
13 DataCol 删除临时列If DataTables("订单").DataCols.Contains("金额") Then DataTables("订单").DataCols.Delete("金额")
End If 按钮或菜单通过Add方法增加的临时列,可以用Delete方法删除
14 DataCol 一列设公式,另列得结果If https://www.wendangku.net/doc/5716222204.html, = "第一列" Then
If e.DataRow.IsNull("第一列") Then
e.DataRow("第二列") = Nothing
Else
e.DataRow("第二列") = Eval(e.DataRow("第一列"),e.DataRow)
End If
End If
DataColChanged事件假定希望根据第一列输入的计算公式,在第二列得出计算结果
15 DataRow 删除行DataTables("订单").DataRows(0).Delete() 按钮或菜单
删除订单表中的第一行Delete会返回逻辑值,如果删除成功,则返回True,否则返回False
16 DataRow 重新加载行DataTables("订单").DataRows(1).Load() 按钮或菜单
重新加载订单表的第二行
17 DataRow 撤销修改DataTables("订单").DataRows(1).Load(False) 按钮或菜单
撤销对订单表第二行的修改
18 DataRow DataTable中增加一行With DataTables("订单").DataRows
.AddNew() '增加一行
End With 按钮或菜单
19 DataRow 删除指定位置的行With DataTables("订单").DataRows
.Delete(0) '删除第一行
End With 按钮或菜单
20 DataRow 清除所有行With DataTables("单").DataRows
.Delete(0) '删除第一行
End With 按钮或菜单
21 DataRow 按日期列求月份Dim dr As DataRow =e.DataRow
if https://www.wendangku.net/doc/5716222204.html, ="开始时间" Then
if dr.IsNull("开始时间") = false Then
dr("月") = dr("开始时间").Month
Else
dr("月") = Nothing
End If
End If 表DataColChanged事件
22 DataRow 新增行编号自动加1 e.DataRow("编号") = https://www.wendangku.net/doc/5716222204.html,pute("Max(编号)") + 1
DataRowAdding事件假定表中有一个编号列,希望新增行的时候,编号列能够自动加1
这个例子其实没有什么意义的,对于外部表使用自动增量主键列,对于内部表使用表达式列引用内部编号列“_Identidy”,是更好的选择。
23 DataTable 获得指定名称的DataTable Dim dt As DataTabledt = DataTables("订单")
按钮或菜单
24 DataTable 锁定表DataTables("订单").AllowEdit = False 按钮或菜单AllowEdit属性
25 DataTable 取消锁定表DataTables("订单").AllowEdit = True 按钮或菜单
AllowEdit属性
26 DataTable 按回车键向下移动光标DataTables("订单").EnterKeyActionDown = True 按钮或菜单
EnterKeyActionDown属性
27 DataTable 在DataTable中增加一行,Dim dr As DataRow 按钮或菜单
其实我们很少直接向DataTab
28 DataTable 保存数据DataTables("订单").Save() 按钮或菜单单保存数据
29 DataTable 同时保存数据和设置DataTables("订单").Save(True) 按钮或菜单
保存设置比较耗时,会影响保存速度。菜单中的保存命令是同时保存数据和设置的。
30 DataTable 自制保存按钮For Each dt As DataTable In DataTables 按钮或菜单
这个按钮就能保存所有表,但是不会保存设置;对于一个成熟的、已经交付使用的项目,有时是没有必要保存设置的。
31 DataTable 删除符合条件的行DataTables("订单").DeleteFor("[日期] < #2/1/2007#")
按钮或菜单删除订单表中2007年2月1日以前的行
32 DataTable 对新增行设置初始值Dim r As Row = CurrentTable.Rows.AddNew()
r("姓名") = https://www.wendangku.net/doc/5716222204.html,r("日期") = Date.Today 按钮或菜单
上述的代码首先在当前表增加一行,然后将新增行的姓名列设为当前用户名,日期列设为当天日期。User表示当前登录用户,我们会在后续章节介绍它。提示:此方法和Table的AddNew方法完全等效。
33 DataTable 在DataTable查找符合条件的行Dim dr As DataRowdr = DataTables("产品").Find("产品编号 = '03'") '找出编号为03的产品
With DataTables("订单")
dr = .Find("产品= 'PD01'","日期") '找出第一次订购PD01产品的记录dr = .Find("产品= 'PD01'","日期",1) '找出第二次订购PD01产品的记录End With 按钮或菜单
34 DataTable 以集合的形式,返回所有符合指定条件的行Dim drs As List(Of DataRow)
drs = DataTables("订单").Select("[产品] = 'PD01' And [日期]= #1/4/1999#")
For Each dr As Datarow In drs
dr("折扣") = 0.12
Next 按钮或菜单对于1999年1月4日订购PD01的订单,希望将其折扣统一设置为0.12
35 DataTable 班级自动生成总分排名 '获得所有班级名称,保存在集合中
Dim bjs As List(Of String) = DataTables("成绩表").GetUniqueValues("","班级")
For Each bj As String In bjs '获得该班级的全部行,按总分降序排序Dim drs As List(Of DataRow) = DataTables("成绩表").Select("[班级] = " & bj, "总分 DESC")
For n As integer = 0 To drs.Count - 1 '遍历所有行
If n > 0 AndAlso drs(n)("总分") = drs(n-1)("总分") Then '如果总分和上一行相同
drs(n)("总分排名") = drs(n-1)("总分排名") '则排名等于上一行
Else
drs(n)("总分排名") = n + 1 '设置排名
End If
Next
Next 按钮或菜单例子,可以参考CaseStudy目录下的文件:成绩排名.Table
36 DataTable 找出符合条件的行,并将指定列的内容替换为指定值
DataTables("订单").ReplaceFor("折扣", 0.15, "[数量] > 600") 按钮或菜单
将订单表中,订购数量大于600的订单的折扣设为0.15
37 DataTable 选定某一区域CurrentTable.Select(1,2,7,6) 按钮或菜单
选定当前表第二行第三列至第八行第7列之间的区域
38 DataTable 选定指定位置的单元格 CurrentTable.Select(0,0) 按钮或菜单
选定当前表的第1行第1列
39 DataTable 选定整个某列CurrentTable.Select(0, 1, CurrentTable.Rows.Count - 1, 1) 按钮或菜单
选定整个第二列
40 DataTable 保存并重新加载所有表 For Each dt As DataTable In DataTables
dt.Load
Next 按钮或菜单在多人同时编辑数据的时候,通过执行此方法,可以得到最新的数据
41 DataTable 设置加载条件重新加载 With DataTables("订单")
.LoadFilter = "[产品] = 'PD01'"
.Load()
End With 按钮或菜单加载产品为PD01的订单
42 DataTable 撤销对表A的修改DataTables("表A").RejectChanges() 按钮或菜单
撤销自打开文件或最近一次保存以来,对该表做出的修改
43 DataTable 移除符合条件的行DataTables("订单").RemoveFor("[产品] = 'PD01'")
按钮或菜单
44 DataTable 根据条件统计表中数据 Dim Total As Integer
Dim Amount As Double
With DataTables("订单")
Total = .Compute("Sum(数量)")
Amount = .Compute("Sum(金额)")
End With 按钮或菜单计算总的销售数量和金额
45 DataTable 根据条件统计表中数据 Dim Total As Long
Total = DataTables("订单").Compute("Sum(数量)", "产品 = 'PD01'") 按钮或菜单
计算产品PD01的销售数量
46 DataTable 根据条件统计表中数据 Dim Customers As List(Of String)
Dim Total As Integer
Customers = DataTables("订单").GetUniqueValues("", "客户")
For Each Customer As String In Customers
Total = DataTables("订单").Compute("Sum(数量)", "[客户] = '" & Customer & "'")
Output.Show(Customer & ":" & Total)
Next
按钮或菜单计算每个客户的订购数量
47 DataTable 删除表DataTables.Delete("统计表1") 按钮或菜单
删除通过代码增加的临时表。
48 DataTables 按条件填充并求和Dim d As Date = Date.Today
Dim m As Integer = d.Month
dim f As New Filler
f.SourceTable = DataTables("人员表") '指定数据来源
f.SourceCols = "姓名,性别" '指定数据来源列
f.DataTable = DataTables("发放记录") '指定数据接收表
f.DataCols = "姓名,性别" '指定数据接收列
f.Fill() '填充数据
For Each dr As DataRow In DataTables("发放记录").DataRows
dr("工资") = DataTables("人员表").Compute("Sum(工资)", "[姓名]= '" & dr("姓名") & "'And 月= '" & m
& "'")
if dr.IsNull("发放日期") = True Then
dr("发放日期") = d
End If
Next 按钮或菜单
49 DataTables 按条件重新加载数据DataTables("订单").LoadFilter = "[日期] = #" & Date.Today & "#"
DataTables("订单").Load()
50 DELETE语句删除指定条件的行DELETE FROM {订单} WHERE Year([日期]) = 1998
按钮或菜单表示删除1998年的订单
51 EXCEL报表Table保存为Excel文件中的一个工作表
CurrentTable.SaveExcel("C:\data\test.xls","订单",False) 按钮或菜单SaveExcel(, SheetName, SelectedRowsOnly):目标Excel文件名,含路径。SheetName: 工作表名。SelectedRowsOnly:逻辑型,设为True,只保存选定行,否则包括所有行。
52 EXCEL报表打印模板Dim Book As New XLS.Book(ProjectPath & "Attachments\出库单.xls")Book.Build() '生成细节区
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单如果Book来自于一个模板文件,必须先调用方法,才能生成细节区。
53 EXCEL报表将DataList的内容保存为Excel文件中的一个工作表。
Dim dst As WinForm.DataList = e.Form.Controls("DataList1")dst.SaveExcel("C:\data\test.xls","订单",False)按钮或菜单SaveExcel(, SheetName, SelectedRowsOnly):目标Excel文件名,含路径。SheetName:
工作表名。SelectedRowsOnly:逻辑型,设为True,只保存选定行,否则包括所有行。
54 EXCEL报表报表中插入一行Dim Book As New XLS.Book("c:\reports\test.xls") '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表Sheet.Rows.Insert(0) '在最前面插入一行Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
55 EXCEL报表报表中插入一列Dim Book As New XLS.Book("c:\reports\test.xls") '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表Sheet.Cols.Insert(0) '在最前面插入一列Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File ="c:\reports\test.xls"
Proc.Start() 按钮或菜单
56 EXCEL报表代码生成报表(导出报表)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.BackColor = Color.Red '样式的背景颜色设为红色
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
If dt.rows(r)("折扣") >= 0.15 Then '如果折扣大于等于0.15
Sheet(r + 1,dt.Cols("折扣").Index).Style = Style '设置折扣单元格的样式
End If
Next
Dim St2 As XLS.Style = Book.NewStyle
St2.Format = "yyyy-MM-dd"
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() 按钮或菜单带样式导出
57 EXCEL报表设置行高、样式及强制换页Dim Book As New XLS.Book("c:\reports\test.xls") '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Style.ForeColor = Color.Red '设置样式的字体颜色
Sheet.Rows(0).Height = 40 '设置第1行的行高
Sheet.Rows(0).Style = Style '设置第1行的样式
Sheet.Rows(20).PageBreak = True '在第21行处强制换页
Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File ="c:\reports\test.xls"
Proc.Start() 按钮或菜单
58 EXCEL报表设置列宽、样式及分页 Dim Book As New XLS.Book("c:\reports\test.xls") '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Style.ForeColor = Color.Red '设置样式的字体颜色
Sheet.Cols(0).Width = 120 '设置第1列的宽度
Sheet.Cols(0).Style = Style '设置第1列的样式
Sheet.Cols(4).PageBreak = True '在第5列处强制分页
Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
59 EXCEL报表单元格样式、超链接Dim Book As New XLS.Book() '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Style.ForeColor = Color.Red '设置样式的字体颜色
Sheet(0,0).Style = StyleSheet(0,0).Value = "邮件"
Sheet(0,0).Hyperlink = "Mailto:"
Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
60 EXCEL报表缩放打印Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
With Sheet.PrintSetting
.AutoScale = True '自动缩放
.FitPagesDown = 1 '垂直方向缩为1页
End With
For i As Integer = 0 To 50 '向工作表的单元格中设置值
Sheet(i, 0).Value = (i + 1) * 10
Sheet(i, 1).Value = (i + 1) * 100
Sheet(i, 2).Value = (i + 1) * 1000
NextBook.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
61 EXCEL报表页面设置Dim Book As New XLS.Book
Dim Sheet As XLS.Sheet = Book.Sheets(0)
With Sheet.PrintSetting
.PaperKind = 9 '设为A4纸
.LandScape = True '横向打印
.MarginLeft = 20 '左右边距设为20毫米
.MarginRight = 20
.MarginTop = 15 '上下边距设为15毫米
.MarginBottom = 15
End With 按钮或菜单
62 EXCEL报表页眉页脚Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
With Sheet.PrintSetting '页眉左边为日期,中间为时间,右边为表名
.Header = "&L&D &C&T &R&A" '在页脚右边打印页号和总页数
.Footer = "&R第&P页,总&N页"
End With
For i As Integer = 0 To 100 '向工作表的单元格中设置值
Sheet(i, 0).Value = (i + 1) * 10
Sheet(i, 1).Value = (i + 1) * 100
Sheet(i, 2).Value = (i + 1) * 1000
Next
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
63 EXCEL报表打印模式、页面居中、网络线、标题等 Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
With Sheet.PrintSetting
.BlackAndWhite = True '用黑白模式打印,即使你安装的是彩色打印
.CenterHorizontal = True '表格水平方向页面居中
.CenterVertical = True '表格垂直方向页面居中
.PrintGridlines = True '打印网格线
.PrintHeaders = True '打印列标题
End With
For i As Integer = 0 To 100 '向工作表的单元格中设置值
Sheet(i, 0).Value = (i + 1) * 10
Sheet(i, 1).Value = (i + 1) * 100
Sheet(i, 2).Value = (i + 1) * 1000
Next
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
64 EXCEL报表单元格对齐数据Dim Book As New XLS.Book() '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
Dim Style As XLS.Style = Book.NewStyle() '定义新样式
Style.ForeColor = Color.Red '设置样式的字体颜色
Style.AlignHorz = XLS.AlignHorzEnum.Center
Style.AlignVert = XLS.AlignVertEnum.Center
Sheet.Rows(0).Height = 50
Sheet.Cols(0).Width = 120
Sheet(0,0).Value = "邮件"
Sheet(0,0).Style = Style
Book.Save("c:\reports\test.xls")
Dim Proc As New Process Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单
下面两个属性用于对齐数据。AlignHorz设置水平对齐方式,XLS.AlignHorzEnum型枚举,主要可选值有:Center:居中General:默认Left:靠左Right:靠右AlignVert设置垂直对齐方式,XLS.AlignVertEnum,主要可选值有:Bottom:靠底Center:居中Top:靠上Undefined:默认
65 EXCEL报表单元格背景颜色和字体颜色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.BackColor = Color.Red '样式的背景颜色设为红色
Dim Style1 As Xls.Style = Book.NewStyle '新建一个样式
Style1.ForeColor = Color.Blue '样式的字体颜色设为蓝色按钮或菜单
66 EXCEL报表单元格边框设置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.Red
Style.BorderColorBottom = Color.Red
Style.BorderColorLeft = Color.Red
Style.BorderColorRight = Color.Red
For r As Integer = 1 to 5
For c As Integer =1 To 5
Sheet(r,c).Style = Style
Next
Next
Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start() 按钮或菜单属性说明备注BorderTop 返回或设置上边框的类型。XLS.LineStyleEnum型枚举,主要可选值有:Dashed:
虚线Dotted:点线Double:双实线Hair:头发丝一样的细线(一个像素)Medium:中等实线MediumDashDotDot ted:中等的(短线+点+点)MediumDashDotted: 中等的(短线+点)MediumDashed: 中等虚线None:无Thick:粗线Thin:细线ThinDashDotDotted:细(短线+点+点)ThinDashDotted:细(短线+点) BorderBottom 返回或设置下边框的类型。BorderLeft 返回或设置左边框类型。BorderRight
返回或设置右边框类型。BorderColorTop 返回或设置上边框颜色BorderColorBottom 返回或设置下边框颜色 BorderColorLeft 返回或设置左边框颜色 BorderColorRight 返回或设置上边框颜色
67 EXCEL报表单元格斜线设置Dim Book As New XLS.Book()
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Dim Style As XLS.Style = Book.NewStyle()
Style.DiagonalStyle= XLS.LineStyleEnum.Thin
Style.DiagonalColor =Color.Red
Style.Diagonal = XLS.DiagonalEnum.Backward
For r As Integer = 1 to 2
For c As Integer =1 To 2
Sheet(r,c).Style = Style
Next
Next
Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start()
按钮或菜单
和斜线设置有关的属性:Diagonal返回或设置斜线的方向,XLS.DiagonalEnum型枚举,可选值有:B ackward:反斜线Forward:斜线None:无DiagonalColor 返回或设置斜线颜色DiagonalStyle返回或设置斜线的类型,XLS.LineStyleEnum型枚举,主要可选值有:Dashed:
虚线Dotted:点线Double:双实线Hair:头发丝一样的细线(一个像素)Medium:中等实线MediumDashDotDot ted:中等的(短线+点+点)MediumDashDotted: 中等的(短线+点)MediumDashed: 中等虚线None:无Thick:粗线Thin:细线ThinDashDotDotted:细(短线+点+点)ThinDashDotted:细(短线+点) 68 EXCEL报表单元格内容自动换行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.WordWrap = True '单元格内容自动换行按钮或菜单
69 EXCEL报表在Excel报表模板中插入一个标记Dim Book As New XLS.Book("c:\book5.xls") Book.Marks.Add("用户名",https://www.wendangku.net/doc/5716222204.html,)
Book.Build()
Book.Save("c:\reports\test.xls")
Dim Proc As New Process
Proc.File = "c:\reports\test.xls"
Proc.Start()
按钮或菜单
利用Marks集合,我们可以在报表模板中插入标记,然后在生成报表的时候,将标记替换为真正的值。
在Excel报表模板中插入一个标记的格式为:
<标记名称>
示例
假定报表中某个位置需要打印出当前登录用户的名称,我们可以在设计报表的时候,在该处插入标记:
<用户名>
标记的名称可以根据需要取。
然后在生成报表之前,利用Marks集合,将标记替换为真正的用户:
70 EXCEL报表插入图片Dim Book As New XLS.Book '定义一个Excel工作簿
Dim Sheet As XLS.Sheet = Book.Sheets(0) '引用工作簿的第一个工作表
For i As Integer = 0 To 9 '向工作表的单元格中设置值
Sheet(i, 0).Value = (i + 1) * 10
Sheet(i, 1).Value = (i + 1) * 100
Sheet(i, 2).Value = (i + 1) * 1000
Next
Sheet(10,2).Value = New XLS.Picture(GetImage("c:\Foxtable.Ico"))
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start()
按钮或菜单单元格的Value属性,不仅可以设置为数据,还可以设置为一个XLS.Picture对象。XLS.Picture用于定义一个可插入到Excel单元格的图片,语法为:
New XLS.Picture(Image)
或
New XLS.Picture(Image, Left, Top, Width, Height)
参数:
Image: 要插入的图片。
Left: 左边距,单位为像素。
Top: 上边距,单位为像素。
Width:宽度,单位为像素。
Height: 高度,单位为像素。
可用GetImage函数从指定的图标文件中获得图标,如果文件已经事先复制到管理项目的Images子目录下,则只需指定文件名即可,否则需要包括路径。
71 EXCEL报表在Excel报表模板中加上制单人信息Dim Book As New XLS.Book(ProjectPath & "Attachments\出库单.xls") '打开模板
Dim Sheet As XLS.Sheet = Book.Sheets(0)
Sheet(6,6).Value = "制单人:" & https://www.wendangku.net/doc/5716222204.html, '修改模板,加入制单人信息
Book.Build() '生成细节区
Book.Save("c:\reports\test.xls") '保存工作簿
Dim Proc As New Process '打开工作簿
Proc.File = "c:\reports\test.xls"
Proc.Start()
按钮或菜单
72 Row 当前选定的行Dim dr As Row = Tables("订单").Current 按钮或菜单
73 Row 删除选定行Tables("订单").Current.Delete() 按钮或菜单
74 Row 克隆第一行Tables("订单").Rows(0).Clone() 按钮或菜单
75 Row 移除当前表的选定行CurrentTable.Current.Remove() 按钮或菜单
移除和删除是不同的,移除只是使得表中暂时不再包括该行,就像该行从来没有被加载过一样;不管你是否保存文件,下次打开后,被移除的行还会出现。
76 Row 序号列自动赋值With Tables("常用代码")
For i AS integer = 0 To .Rows.Count - 1
.Rows(i)("xh") = i + 1
Next
End With
按钮或菜单
77 Table 第一行CurrentTable.Position = 0 按钮或菜单
78 Table 最末行CurrentTable.Position = CurrentTable.Rows.Count - 1 按钮或菜单
79 Table 上一行CurrentTable.Position = CurrentTable.Position - 1 按钮或菜单
80 Table 下一行CurrentTable.Position = CurrentTable.Position + 1 按钮或菜单
81 Table 删除行CurrentTable.Current.Delete 按钮或菜单
82 Table 新增行CurrentTable.AddNew() 按钮或菜单
83 Table 隐藏指定行隐藏第五行:CurrentTable.Position= 4Syscmd.Row.HideSelectedRows()
按钮或菜单
84 Table 隐藏所有行with currentTable
.select(0,0,.rows.count - 1,0)
Syscmd.Row.HideSelectedRows()
End With
按钮或菜单
85 Table 显示所有行If CurrentTable Is Nothing Then
ReturnElse
CurrentTable.StateFilter = StateFilterEnum.None
End If 按钮或菜单
86 Table 选定整个表With Tables("订单")
.Select(0, 0, .Rows.Count - 1, .Cols.Count - 1)
End With
按钮或菜单
87 Table 选定数量列With Tables("订单")
Dim c As Integer= .Cols("数量").Index
.Select(0, c, .Rows.Count - 1, c)
End With 按钮或菜单
88 Table 重置当前表选定列With CurrentTable
.Cols(.ColSel).DataCol.RaiseDataColChanged()
End With
按钮或菜单
要重置当前表选定列,但是Col并没有重置列的方法,我们只能调用DataCol的RaiseDataColChanged 方法
89 Table 当前表增加一行CurrentTable.AddNew() 按钮或菜单
90 Table 在关联表“产品.订单”中增加10行Tables("产品.订单").AddNew(10) 按钮或菜单
和DataTable的AddNew方法相比,用Table的AddNew方法增加行有以下优点:1、光标会自动移到新增加的行。2、如果在关联子表中增加行,其关联列内容会自动填入。所以大多数时候,我们用Table的AddN ew方法增加行,因为这样更方便。
91 Table 条件筛选Tables("订单").Filter = "[客户] = 'CS01' And [日期] >= #1/1/2007# And [日期] <= #12/31/2007#" 按钮或菜单在订单表中需要筛选出客户为"CS01",订购日期为2007年的记录
92 Table 条件筛选Tables("订单").Filter = "[折扣] Is Null"按钮或菜单
筛选出折扣为空的记录
93 Table 根据日期排序Tables("订单").Sort = "日期" 按钮或菜单
94 Table 根据客户和日期排序,其中日期为降序 Tables("订单").Sort = "客户,日期 DESC" 按钮或菜单
根据客户和日期排序,其中日期为降序,也就是相同客户的订单,最新的订单排在前面
95 Table 取消排序Tables("订单").Sort = "" 按钮或菜单
96 Table 重新加载当前行Tables("订单").Current.DataRow.Load() 按钮或菜单
97 Table 条件设置当前行内容Tables("订单").Current("数量") = 100 按钮或菜单
将订单表选定行的数量列内容设为100
98 Table 选择指定行CurrentTable.Position = 2 '选择第三行按钮或菜单选择当前表第三行
99 Table 根据指定的表达式和条件进行计算Dim Sum As DoubleSum = Tables("订单").Compute("Sum(数量)", "产品 = 'PD01'") 按钮或菜单统计订单表中产品PD01的销售金额100 Table 在指定列中查找指定的字符内容With CurrentTable
Dim r As Integer
r = .Find("abc", .RowSel + 1, 0, False, False, True)
If r > - 1 Then '如果找到符合条件的行
.Select(r, 0) '则选择该行
End If
End With 按钮或菜单
在当前表的第一列输入一些内容(别忘记要输入一些“abc”),然后将上述代码复制到命令窗口,反复单击“执行”按钮,进行测试。
101 Table 用列名称来指定要查找的列With CurrentTable
Dim r As Integer
r = .Find("PD01", .RowSel + 1, "产品", False, False, True)
If r > - 1 Then '如果找到符合条件的行
.Select(r, .Colsel) '则选择该行
End If
End With 按钮或菜单
102 Table 根据指定的条件表达式查找行With CurrentTable
Dim r As Integer
r = .FindRow("[公司名称] Like '*湛江*'", .Position + 1, True ) '从当前行开始查找
If r >= 0 Then '如果找到的话
.Position = r '定位到找到的行。
End If
End With 按钮或菜单在当前表中的公司名称列中,查找包括“湛江”二字的单位
103 Table 返回指定的数据行在Table中的位置Dim dr As DataRowdr = DataTables("订单").Find("[产品] = 'PD01'", "日期 Desc")
If dr IsNot Nothing Then
Dim wz As Integer = Tables("订单").FindRow(dr)
If wz >= 0 Then
Tables("订单").Position = wz
End If
End If 按钮或菜单将光标定位到最后一次订购PD01产品的订单
104 Table 打开指定名称的表视图 Tables("订单").OpenView("视图一") 按钮或菜单开订单表中名为"视图一"的视图
105 Table 将Table保存为Excel文件CurrentTable.SaveExcel("C:\data\test.xls","订单",False)按钮或菜单
106 Table 统计指定区域的数据Dim Sum As DoubleWith CurrentTable
Sum = CurrentTable.Aggregate(AggregateEnum.Sum, .TopRow, .LeftCol, .BottomRow, .RightCol)
End With 按钮或菜单统计当前表选定区域的累积值
107 Table 打印预览表CurrentTable.Print(True,False) '打印预览当前表按钮或菜单
108 Table 设置标题行高度Tables("表名").SetHeaderRowHeight(20,25) 按钮或菜单表有两个标题行,希望将标题行的高度分别设为20和25
109 Table 直接打印表With CurrentTable.PrintInfo
.PaperKind = 0 '纸张类型设为自定义
.PaperWidth = 250 '宽度设为250毫米
.PaperHeight = 120 '高度设为120毫米
End With
CurrentTable.DirectPrint(True,False) '打印预览
按钮或菜单
110 Table 打开打印设置对话框CurrentTable.PrintSetting() 按钮或菜单
111 Table 输入焦点移到Table中If CurrentTable.Focus Then '将输入焦点移到当前表CurrentTable.StartEditing '如果成功,则开始编辑。
End If 按钮或菜单如果成功地将输入焦点移到Table中,则返回True,否则返回False。
112 Table 当前表当前行指定列的值: currenttable.current(CurrentTable.ColSel) 按钮或菜单
113 表事件某一列的内容发生变化前执行If https://www.wendangku.net/doc/5716222204.html, = "折扣" Then '如果是折扣列的内容发生变化。
If e.NewValue > 0.15 Then '如果输入的内容大于0.15。 e.NewValue = 0.15 '那么改为0.15。
End If
End If DataColChanging事件在订单表中折扣超出0.15后,自动改为0.15
114 表事件实现代码输入If https://www.wendangku.net/doc/5716222204.html, = "产品" Then '如果是产品列的内容发生变化。
If e.NewValue = "tv" Then '如果新值是"tv"。
e.NewValue = "电视机" '那么将"tv"替换为"电视机"
ElseIf e.NewValue = "tel" '如果新值是"tel"
e.NewValue = "电话机" '那么将"tel"替换为"电话机"
End If
End If DataColChanging事件产品列输入tv,将自动替换为电视机,如果输入tel,自动替换为电话机
115 表事件某一列的内容被更改后执行If https://www.wendangku.net/doc/5716222204.html, = "已结帐" Then '如果是已结帐列的内容变动
If e.NewValue = True Then '而且变动后的值是True(已勾选) e.DataRow.Locked = True '那么锁定此行
End If
End If DataColChanged事件对于已结帐的行,能够自动通过审核(锁定),以免被误编辑。
116 表事件某一列的内容被更改后执行If https://www.wendangku.net/doc/5716222204.html, = "身份证号码" Then '是身份证号码发生变化吗? If e.DataRow.IsNull("身份证号码") Then '身份证号码是否为空e.DataRow("出生日期") = Nothing '如果为空,则清除出生日期
Else '否则从身份证号码列中提取出生日期
e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码")) End If
End If DataColChanged事件员工表中有身份证号码、出生日期列,出生日期根据身份证号码计算得出117 表事件某一列的内容被更改后执行Select Case https://www.wendangku.net/doc/5716222204.html,
Case "已结帐" '如果是已结帐列的内容变动
If e.NewV alue = True Then '而且变动后的值是True(已勾选)
e.DataRow.Locked = True '那么锁定此行
End If
Case "身份证号码"
If e.DataRow.IsNull("身份证号码") Then '身份证号码是否为空
e.DataRow("出生日期") = Nothing '如果为空,则清除出生日期
Else
'否则从身份证号码列中提取出生日期
e.DataRow("出生日期") = ReadBirthday(e.DataRow("身份证号码"))