Tables("现金录入").sort = "序号"
Dim doc As New PrintDoc '定义一个新报表
doc.PageSetting.PaperKind = 9 'A4纸
doc.PageSetting.Landscape = False '竖向打印
doc.PageSetting.LeftMargin = 10 '设置左边距
doc.PageSetting.RightMargin = 10 '设置右边距
doc.PageSetting.TopMargin = 10 '设置上边距
doc.PageSetting.BottomMargin = 10 '设置下边距
Dim rt As Prt.RenderTable
rt = New prt.RenderTable
rt.Style.TextAlignVert = prt.AlignVertEnum.Center
'rt.Style.GridLines.All = New prt.LineDef(0.1,Color.White) '无边框
rt.Style.Gridlines.All = New prt.Linedef(Color.Gray) '灰色网格线
rt.CellStyle.Spacing.All = 0.2
rt.Style.Font = New Font("宋体",9)
rt.RowGroups(0,1).Header = prt.TableHeaderEnum.All '利用行组,将第一行设为表头
rt.Rows(0).Style.TextAlignHorz = prt.AlignHorzEnum.Center '第一行内容水平居中
Dim cnt As Integer
Dim tbl As Table = Tables("现金录入")
Dim ColNames As String() = New String(){"线路","车号","纸币","硬币","金额"}
Dim ColWidths As String() = New String(){"20", "25", "25","30","30"}
Dim drs As List(Of DataRow)
Dim Regions As List(Of String) = tbl.DataTable.GetValues("线路","","序号")
For c As Integer = 0 To ColNames.Length - 1
rt.Cells(0,c).Text = ColNames(c)
rt.Cols(c).Width = ColWidths(c)
Next
rt.cells(0,2).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.cells(0,3).Style.TextAlignHorz = prt.AlignHorzEnum.Center
rt.cells(0,4).Style.TextAlignHorz = prt.AlignHorzEnum.Center
For Each pd As String In Regions
drs = tbl.DataTable.Select("[线路] = '" & pd & "'","序号")
Dim m As Integer = drs.count '记录每条线路的行数
For Each dr As DataRow In drs
cnt = rt.Rows.Count '报表总行数
' 这里cnt 以1,3,5,7,9......递增,不能理解.
For c As Integer = 0 To ColNames.Length - 1
If tbl.Cols(ColNames(c)).IsNumeric Then
If dr(ColNames(c)) <> 0 Then
rt.Cells(cnt + 1, c).Text = Format(dr(tbl.Cols(ColNames(c)).Name),"0.0")
rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.Right
End If
Else
rt.Cells(cnt + 1, c).Text = dr(tbl.Cols(ColNames(c)).Name)
rt.Cols(c).Style.TextAlignHorz = prt.AlignHorzEnum.center
End If
Next
Next
cnt = rt.Rows.Count
rt.Cells(cnt, 0).Text = "小计 " & pd
rt.Cells(cnt,2).Text = Format(tbl.compute("Sum(纸币)", "线路 = '" & pd & "'"),"0.0")
rt.Cells(cnt,3).Text = Format(tbl.compute("Sum(硬币)", "线路 = '" & pd & "'"),"0.0")
rt.Cells(cnt,4).Text = Format(tbl.compute("Sum(金额)", "线路 = '" & pd & "'"),"0.0")
rt.Cells(cnt-m,0).SpanRows = m '问题出在此处,应怎样修改?
rt.Cells(cnt,0).SpanCols = 2
Next
cnt = rt.Rows.Count
rt.Cells(cnt, 0).Text = "合计 " '打印合计
rt.Cells(cnt, 2).Text = Format(tbl.compute("Sum(纸币)"),"0.0")
rt.Cells(cnt, 3).Text = Format(tbl.compute("Sum(硬币)"),"0.0")
rt.Cells(cnt, 4).Text = Format(tbl.compute("Sum(金额)"),"0.0")
Doc.Columns.Add() '增加第一栏
Doc.Columns.Add() '增加第二栏
Doc.Columns.Add() '增加第三栏
Doc.Columns(0).Spacing = 3
Doc.Columns(1).Spacing = 3
Doc.Body.Children.Add(rt)
Dim ra As New prt.RenderArea
Dim rx As New prt.RenderText
Dim tm As Date = e.Form.Controls("DateTimePicker1").value
rx.Text = "车售款明细表 (" & Format(tm,"yyyy年MM月dd日") & ")"
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Center
rx.Style.Padding.Bottom = 0.5
rx.Style.Font = New Font("黑体",11)
ra.Children.Add(rx)
Doc.PageHeader = ra
rx = New prt.RenderText '设置文本对象的内容
Dim cmb As String = e.Form.Controls("CheckedComboBox1").value
rx.Text = "点钞人员: " & cmb
rx.Style.TextAlignHorz = prt.AlignHorzEnum.Right '靠右对齐
rx.Style.Padding.Bottom = 0.5 '底端内容缩进0.5毫米
rx.Style.FontSize = 8 '字体大小为8磅
Doc.PageFooter = rx
doc.Preview() '预览