设置列格式
DataTables("考勤_Table1").DataCols("上班时间").SetDateTimeFormat(DateTimeFormatEnum.Time)
DataTables("考勤_Table1").DataCols("上班时限").SetDateTimeFormat(DateTimeFormatEnum.Time)
DataTables("考勤_Table1").DataCols("上班计时").ExtendType = ExtendTypeEnum.TimeSpan
DataTables("考勤_Table1").DataCols("下班时间").SetDateTimeFormat(DateTimeFormatEnum.Time)
DataTables("考勤_Table1").DataCols("下班时限").SetDateTimeFormat(DateTimeFormatEnum.Time)
DataTables("考勤_Table1").DataCols("下班计时").ExtendType = ExtendTypeEnum.TimeSpan
DataTables("考勤_Table1").DataCols("工作时长").ExtendType = ExtendTypeEnum.TimeSpan
------------------------------------------------
打印代码
Dim doc As New PrintDoc '定义一个新报表
Dim rt As New prt.RenderTable() '定义一个新表格
Dim n As New prt.RenderText '定义一个文本对象
Dim n1 As New prt.RenderText '定义一个文本对象
Dim n2 As New prt.RenderText '定义一个文本对象
Dim n3 As New prt.RenderText '定义一个文本对象
'Dim n4 As New prt.RenderText '定义一个文本对象
Dim st As String
Dim tb As Table = Tables("考勤_Table1")
n.Text = "员工工作考勤明细报表" '设置文本对象的内容
n.Style.Font = New Font("黑体", 20 , FontStyle.Bold) '设置文本对象的字体
n.Style.TextAlignHorz = prt.AlignHorzEnum.Center '文本内容水平居中
doc.Body.Children.Add(n)
n1.Text = "打印日期:"& Date.Now
n1.Style.Font = New Font("黑体", 8 , FontStyle.Bold) '设置文本对象的字体
n1.Style.TextAlignHorz = prt.AlignHorzEnum.Right '文本内容水平居中
n1.X = 0 + 20 '指定水平位置
n1.y = 18 + 20 '指定垂直位置
n3.Style.Font = New Font("黑体", 8 , FontStyle.Bold) '设置文本对象的字体
n3.Style.TextAlignHorz = prt.AlignHorzEnum.Left '文本内容水平居中
n3.X = 5 + 20 '指定水平位置
n3.y = 18 + 20 '指定垂直位置
n3.Text = e.Form.Controls("Label5").Text
doc.Body.Children.Add(n3) '将文本对象加入到报表
doc.Body.Children.Add(n2) '将文本对象加入到报表
doc.Body.Children.Add(n1)
doc.PageSetting.Landscape = True '横向打印
rt.Width = "243" '表格宽度为自动,也就是等于各列设置宽度之和
rt.SplitHorzBehavior = prt.SplitBehaviorEnum.SplitIfNeeded '表格宽度超出页宽时,可以水平换页
rt.Style.Font = tb.Font
For c As Integer = 0 To tb.Cols.Count -1 '逐列设置和填入内容
rt.Cells(0,c).Text = tb.Cols(c).Name '列名作为标题
rt.Cells(0,c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '标题内容水平居中
rt.Cols(c).Width = tb.Cols(c).PrintWidth '列宽等于实际列宽
rt.Style.Spacing.Top = 10 '表格和前面对象的垂直间隔为4毫米
rt.Style.Spacing.Bottom = 10 '表和和前对象的垂直间隔为10毫米
If tb.Cols(c).IsNumeric OrElse tb.Cols(c).IsDate Then '如果是数值或日期列
rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Center '数据水平居中
End If
If tb.Cols(c).IsNumeric Then
Select tb.Cols(c).Name
Case "工作时长"
For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
rt.Cells(r + 1, c).Text = tb(r,c) \ 3600 & ":" & Format((tb(r,c) Mod 3600) \ 60,"00")
rt.Rows(0).Height = 7 '设置行高
Next
Case Else
For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
rt.Cells(r + 1, c).Text = Format(tb(r,c), "0")
rt.Rows(0).Height = 7 '设置行高
Next
End Select
ElseIf tb.Cols(c).IsDate
Select tb.Cols(c).Name
Case "上班时间"
For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
rt.Cells(r + 1, c).Text = Format(tb(r,c), "HH:mm")
rt.Rows(0).Height = 7 '设置行高
Next
End Select
Else
For r As Integer = 0 To tb.Rows.Count -1 '开始填入该列内容
rt.Cells(r + 1, c).Text = tb(r,c)
rt.Rows(0).Height = 7 '设置行高
Next
For i As Integer = 1 To 9
rt.Rows(i).Height = 5.5
Next
End If
Next
rt.Style.Gridlines.All = New prt.Linedef(Color.Black) '灰色网格线
rt.CellStyle.Spacing.All = 0.5 '单元格内距设为0.5毫米
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
rt.Style.Font = New Font("宋体", 10 , FontStyle.Bold) '设置文本对象的字体
doc.Body.Children.Add(rt) '将表格加入到报表
doc.Preview()