综合示例二

请打开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) '定义一个106列的表
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)

 


本页地址:http://www.foxtable.com/webhelp/topics/6044.htm