首先,感谢"长江支流"的为我们提供的GoldPrinter(金质打印通)打印源码!
在使用GoldPrinter(金质打印通)时,设置网格头,需要定义数组,很麻烦,遂写了下面的代码简化之。在引用时这样只需要把下面函数添加进你的程序就可以了,调用方法如下,支持多行多列。
''*****网格头说明(可选)*****
misGoldPrinter.Header = SetGridHeader("aa,aa,aa|bb,bb,bb") '将定制对象,赋给页头
'
-----------------
'
设置表格上的标题,可以是多行
'
------------------------

Private
Shared
Function SetGridHeader()
Function SetGridHeader(ByVal HeaderStr As Object) As GoldPrinter.Header
'分行用“|”,分割用"," 例如:“a,b,c|d,e,f”
'行列数基本不受限制,但超过一页失去意义,因为以Body为主,以其它为辅
'实际上可以设置header.DataSource
'DataSource可以是字符串、一维数组、二维数组、DataTable、WinDataGrid、WebDataGrid、ListView
'MSHFlexGrid、HtmlTable等等二维形式

If TypeName(HeaderStr) = "String" Then
If HeaderStr = "" Then
Return Nothing
End If
Dim i, j As Int16
Dim RowNum, ColNum, StartChar, EndChar As Int16
Dim js As Boolean = True
For i = 0 To HeaderStr.Length - 1
If HeaderStr.Chars(i) = "|" Then
RowNum += 1
js = False '遇到分行就不要计列数了
End If
If Not js AndAlso HeaderStr.Chars(i) = "," Then
ColNum += 1
End If
Next
If RowNum > 0 Then
Dim header As New GoldPrinter.Header(RowNum + 1, ColNum + 1)
header.IsDrawAllPage = True '可以指定每页是否重复打印
StartChar = 0
EndChar = HeaderStr.Length
For i = 0 To RowNum
For j = 0 To ColNum
If j = ColNum Then
If i < RowNum Then
EndChar = HeaderStr.IndexOf("|", StartChar)
Else
EndChar = HeaderStr.Length
End If

Else
EndChar = HeaderStr.IndexOf(",", StartChar + 1)
End If
header.SetText(i, j, HeaderStr.Substring(StartChar, EndChar - StartChar))
StartChar = EndChar + 1

Next
Next
Return header
Else
Dim header As New GoldPrinter.Header
header.DataSource = HeaderStr
Return header
End If

Else
Dim header As New GoldPrinter.Header
header.DataSource = HeaderStr
Return header
End If



End Function