以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 求助:专业报表打印-多个容器和容器内的排序 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=152701) |
||||
-- 作者:18801459487 -- 发布时间:2020/7/19 14:01:00 -- 求助:专业报表打印-多个容器和容器内的排序 专业报表打印中,之前做的容器都能正常显示,但是添加上答案排序后,就乱码了,或者不能正常显示 理想中的输出是图1,一行有三个5连答案,但是实际却是图2 如果是 doc.Stacking = prt.StackingRulesEnum.InlineLeftToRight 上边的就全部乱码嘛,黑乎乎一排 如果是da.Stacking = prt.StackingRulesEnum.InlineLeftToRight 就变成一行一行的啦 自己也试了很多种形式,每个容器都标注排列等,不知道出错在哪儿啦, 希望大神指教,最后程序的结果就是,前面正常输出,最后的答案可以排排序,如第一张图 非常感谢! Dim doc As New PrintDoc \'定义一个报表 Dim tbl As Table = Tables("DXJ") \'设置页面边距 Doc.PageSetting.LeftMargin = 10 \'设置左边距 Doc.PageSetting.RightMargin = 5 \'设置右边距 Doc.PageSetting.TopMargin = 20 \'设置上边距 Doc.PageSetting.BottomMargin = 20 \'设置下边距 For i As Integer = tbl.TopRow To tbl.BottomRow Dim rw As Row = tbl.Rows(i) Dim rx0 As New prt.RenderText \'定义一个文本对象 Dim rx As New prt.RenderText \'定义一个文本对象 Dim rx2 As New prt.RenderText \'定义一个文本对象 Dim rx3 As New prt.RenderText \'定义一个文本对象 Dim rx4 As New prt.RenderText \'定义一个文本对象 Dim xxA As New prt.RenderText \'定义一个文本对象 Dim xxB As New prt.RenderText \'定义一个文本对象 Dim xxC As New prt.RenderText \'定义一个文本对象 Dim xxD As New prt.RenderText \'定义一个文本对象 Dim xxE As New prt.RenderText \'定义一个文本对象 Dim ra As New prt.RenderArea \'定义一个容器 Dim j As Integer= i-tbl.TopRow+1 \'加入题身 rx0.text = j & "." & ". " & rw("题身1") rx0.Style.FontSize = 14 \'大体大小为16磅 rx0.Style.Spacing.top = 2 \'和下面的对象(表格)距离3毫米 rx0.Style.Spacing.Bottom = 1 ra.Children.Add(rx0) \'加入到容器中 \'题身1缩进 If len(rw("序号"))=1 Then rx0.Style.TextIndent = 5 ElseIf len(rw("序号"))=2 Then rx0.Style.TextIndent = 2.5 ElseIf len(rw("序号"))=3 Then rx0.Style.TextIndent = 0 End If rx2.text = rw("题身2") rx2.Style.FontSize = 14 \'大体大小为16磅 rx2.Style.TextIndent = 12.5 rx2.Style.TextAlignVert = prt.AlignVertEnum.Top rx2.Style.Spacing.Bottom = 1 ra.Children.Add(rx2) \'加入到容器中 rx3.text = rw("题身3") rx3.Style.FontSize = 14 \'大体大小为16磅 rx3.Style.TextIndent = 12.5 rx3.Style.Spacing.Bottom = 2 ra.Children.Add(rx3) \'加入到容器中 rx4.text = rw("题身4") rx4.Style.FontSize = 14 \'大体大小为16磅 rx4.Style.TextIndent = 12.5 rx4.Style.Spacing.Bottom = 2 ra.Children.Add(rx4) \'加入到容器中 \'选项ABCDE xxA.text = "A. " & rw("选项A") xxA.Style.FontSize = 14 \'大体大小为16磅 xxA.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 xxA.Style.TextIndent = 12.5 ra.Children.Add(xxA) \'加入到容器中 xxB.text = "B. " & rw("选项B") xxB.Style.FontSize = 14 \'大体大小为16磅 xxB.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 xxB.Style.TextIndent = 12.5 ra.Children.Add(xxB) \'加入到容器中 xxC.text = "C. " & rw("选项C") xxC.Style.FontSize = 14 \'大体大小为16磅 xxC.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 xxC.Style.TextIndent = 12.5 ra.Children.Add(xxC) \'加入到容器中 xxD.text = "D. " & rw("选项D") xxD.Style.FontSize = 14 \'大体大小为16磅 xxD.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 xxD.Style.TextIndent = 12.5 ra.Children.Add(xxD) \'加入到容器中 xxE.text = "E. " & rw("选项E") xxE.Style.FontSize = 14 \'大体大小为16磅 xxE.Style.Spacing.Bottom = 3 \'和下面的对象(表格)距离3毫米 xxE.Style.TextIndent = 12.5 ra.Children.Add(xxE) \'加入到容器中 \'如果CDE没有内容 If rw("选项E")=Nothing Then xxE.text= Nothing End If If rw("选项D")=Nothing Then xxD.text= Nothing End If If rw("选项C")=Nothing Then xxC.text= Nothing End If \'条件排序,排成一排 If len( xxA.text ) <15 And len( xxB.text ) <15 And len( xxC.text ) <15 And len( xxD.text ) <15 Then xxA.X= 0 xxA.Y = "" xxB.X = 40 xxC.X = 80 xxC.Y= "Prev.TOP" xxD.X = 120 xxD.Y = "Prev.TOP" xxE.X = 0 xxE.Y = "Prev.TOP+6" \'排成两行 ElseIf len( xxA.text ) <30 And len( xxB.text ) <30 And len( xxC.text ) <30 And len( xxD.text ) <30 Then xxA.X= 0 xxB.X = 80 xxC.X = 0 xxC.Y= "Prev.Bottom" xxD.X = 80 xxD.Y = "Prev.Top" xxE.Y = 0 xxE.Y = "Prev.Bottom" End If Doc.Body.ChildRen.Add(ra) \'将容器加入到报表中 Next \'第二个容器 \'参考答案 Dim ckd As New prt.RenderArea \'定义一个容器 Dim ckda As New prt.RenderText \'定义一个文本对象 ckda.text = " 参考答案 " ckda.Style.FontSize = 20 \'大体大小为16磅 ckda.Style.TextColor = Color.Red \'字符颜色设为红色 ckda.Style.Spacing.top = 5 \'和下面的对象(表格)距离3毫米 ckda.Style.Spacing.Bottom = 1 ckd.Children.Add(ckda) \'加入到容器中 doc.Body.Children.Add(ckd) \'将文本对象加入到报表 \'答案报表 \'起始位置 Dim qswz As New prt.RenderText \'定义一个文本对象 Dim qs As Integer = tbl.TopRow Dim js As Integer = tbl.BottomRow Dim gj As Integer qs = qs + 1 js = js + 1 gj = js - qs + 1 qswz.text= "打印顺序:" & "从" & qs & "至" & js & "题,共计" & gj & " 题." qswz.Style.Padding.Top = 5 \'上边距5毫米 qswz.Style.Padding.Bottom = 5 \'下边距5毫米 qswz.Style.FontBold = True \'字体加粗 qswz.Style.FontSize = 16 \'大体大小为16磅 qswz.Style.TextColor = Color.red doc.Body.Children.Add(qswz) \'将文本对象加入到报表 \'答案排序 For i As Integer = tbl.TopRow To tbl.BottomRow Step 5 Dim rw As Row = tbl.Rows(i) Dim h As Integer Dim s As String = rw("答案") For j As Integer = 1 To 4 If i+j <= tbl.BottomRow rw = tbl.Rows(i+j) s = s & rw("答案") s=s.ToUpper h = i-tbl.TopRow+1 End If Next Output.Show(h) Dim xhda As New prt.RenderText \'定义一个文本对象 Dim da As New prt.RenderArea \'定义一个容器 da.Stacking = prt.StackingRulesEnum.InlineLeftToRight da.Width = 45 \'宽度53毫米 \'da.Height = 24 \'高度24毫米 da.SplitHorzBehavior = prt.SplitBehaviorEnum.Never \'禁止水平分割 da.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止垂直分割 Doc.Body.ChildRen.Add(da) \'将容器加入到报表中 \'加入标题 xhda.text = h & "-" & h+4 & ":" & s xhda.Style.FontSize = 16 \'大体大小为16磅 da.Children.Add(xhda) \'加入到容器中 Next Doc.Preview() \'预览报表 |
||||
-- 作者:有点蓝 -- 发布时间:2020/7/19 21:38:00 -- 参考: Dim doc As New PrintDoc \'定义一个报表 Dim tbl As Table = Tables("DXJ") Dim rt As prt.RenderText \'定义一个文本对象 For i As Integer = tbl.TopRow To tbl.BottomRow Step 5 Dim rw As Row = tbl.Rows(i) Dim s As String = rw("答案") For j As Integer = 1 To 4 If i+j <= tbl.BottomRow rw = tbl.Rows(i+j) s = s & rw("答案") End If Next rt = New prt.RenderText() \'创建文本对象 rt.Text = i+1 & "-" & i+5 & ":" & s \'设置文本对象的内容 rt.Style.Spacing.Bottom = 3 \'设置下间隔为3毫米 rt.SplitVertBehavior = prt.SplitBehaviorEnum.Never \'禁止被垂直分割 rt.Style.TextAlignVert = prt.AlignVertEnum.Center \'垂直居中 doc.Body.Children.Add(rt) \'将文本对象加入到报表 Next Doc.Preview() \'预览报表 |
||||
-- 作者:18801459487 -- 发布时间:2020/7/20 10:52:00 -- 以下是引用有点蓝在2020/7/19 21:38:00的发言: 参考: 很感谢回复,只是有些遗憾,还没达到想要的效果。 希望大神能够继续点播,源文件已经上传,代码在打印输出-报表管理-3【求助】题目+答案 想做的效果是题目批量输出,加上如下的答案排列 |
||||
-- 作者:有点蓝 -- 发布时间:2020/7/20 11:09:00 --
|