综合示例二
请打开CaseStudy目录下的文件“基本功能演示.Table”,选择出库表。
本节的任务是生成Word格式的出库单,同样的任务我们已经用Excel报表和Word报表实现过,这次用WordCreater实现:
为方便各项内容的排列布局,我将所有内容放在同一个RtfTable中:
下面是完整的代码,请细细体会:
Dim
wdc
As
New
WordCreator()
Dim
fnt1
As
New
Font("宋体",
12, fontstyle.Bold)
Dim
fnt2
As
New
Font("宋体",
9)
Dim
dr
As
DataRow = Tables("出库").Current.DataRow
Dim
crs
As
List(Of
DataRow) = dr.GetChildRows("出库明细")
Dim
wtb
As
New
Word.Objects.RtfTable(10, 6)
'定义一个10行6列的表
wdc.Add(wtb)
With
wtb.Rows(0).Cells(0)
.SetMerged(1, 6)
.Alignment = ContentAlignment.MiddleCenter
.Content.Add(New
Word.Objects.RtfString("湛江辉迅出库单",
fnt1))
End
With
With
wtb.Rows(1).Cells(0)
.SetMerged(1, 6)
.Alignment = ContentAlignment.MiddleLeft
.Content.Add(New
Word.Objects.RtfString("出库单编号:"
& dr("出库单编号"),
fnt2))
End
With
With
wtb.Rows(2).Cells(0)
.SetMerged(1, 2)
.Alignment = ContentAlignment.MiddleLeft
.Content.Add(New
Word.Objects.RtfString("领用部门:"
& dr("领用部门"),
fnt2))
End
With
With
wtb.Rows(2).Cells(2)
.SetMerged(1, 2)
.Alignment = ContentAlignment.MiddleCenter
.Content.Add(New
Word.Objects.RtfString("出库日期:"
& dr("出库日期"),
fnt2))
End
With
With
wtb.Rows(2).Cells(4)
.SetMerged(1, 2)
.Alignment = ContentAlignment.MiddleRight
.Content.Add(New
Word.Objects.RtfString("领料人:"
& dr("领料人"),
fnt2))
End
With
wtb.Rows(2).Height = 15
Dim
colNames()
As
String
= {"商品代码",
"商品名称",
"规格",
"单位",
"数量",
"备注"}
For
cidx
As
Integer
= 0
To
colNames.Length - 1
With
wtb.Rows(3).Cells(cidx)
'生成列标题
.Alignment = ContentAlignment.MiddleCenter
.Content.Add(New
Word.Objects.RtfString(colNames(cidx), fnt2))
.SetRectBorder(Word.RtfBorderStyle.Single, color.Black, 0.5)
End
With
For
rinx
As
Integer
= 4
To
8
'逐行填入此列的内容
With
wtb.Rows(rinx).Cells(cidx)
.SetRectBorder(Word.RtfBorderStyle.Single, color.Black, 0.5)
If
rinx - 4 <= crs.Count - 1
Then
Dim
val
As
String
= crs(rinx - 4)(colnames(cidx))
.Content.Add(New
Word.Objects.RtfString(val, fnt2))
End
If
End
With
Next
Next
With
wtb.Rows(9).Cells(0)
.SetMerged(1, 3)
.Alignment = ContentAlignment.MiddleLeft
.Content.Add(New
Word.Objects.RtfString("库管员:"
& dr("制单"),
fnt2))
End
With
With
wtb.Rows(9).Cells(3)
.SetMerged(1, 3)
.Alignment = ContentAlignment.MiddleRight
.Content.Add(New
Word.Objects.RtfString("合计:"
& dr("数量"),
fnt2))
End
With
'保存并打开文件
Dim
fl
As
String
=
"c:\temp\test.docx"
wdc.Save(fl)
Process.Start(fl)