以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错 并且输出重复数据??  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=189231)

--  作者:cnsjroom
--  发布时间:2023/11/18 2:01:00
--  josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错 并且输出重复数据??
josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错
麻烦老师们帮忙看看问题出现在哪?
需要协助的问题:
1、wenben会输出重复值,有没有办法只输出最后一次的完整数据
当前输出为:
①、张三
②、张三
     李四
③、张三
     李四
     王五
有没有办法直接输出仅只输出序号为3的值呢?

2、将这个josn值直接写入word中并替换指定字符。

当前代码为:
Dim json As String = ja.ToString
Dim ja12 As JArray = Jarray.Parse(json)
Dim sss As String
Dim ssss As String
Dim wenben As String
For i As Integer = 0 To ja12.Count - 1
  sss = "在" & ja12(i)("活动名称").ToString() & "活动中,从" & ja12(i)("开始日期").ToString() & "至" & ja12(i)("结束日期").ToString() & ",对" & ja12(i)("案件id集合").ToString() & "等" & ja12(i)("案件数量").ToString() & "件案事件进行评查评分,组织" & ja12(i)("评查人员").ToString() & "等" & ja12(i)("评查人数").ToString() & "人参与评查活动。" & Chr(13) & Chr(10)
ssss &= i + 1 & "、由" & ja12(i)("评分人").ToString() & "对" & ja12(i)("案件名称").ToString() & "案件进行评查打分,其中:审查调查阶段得分" & ja12(i)("审查调查得分").ToString() & "分,审理阶段得分" & ja12(i)("审理得分").ToString() & "分,加分" & ja12(i)("加分").ToString() & "分,加倍扣分" & ja12(i)("加倍扣分").ToString() & "分,总分为:" & ja12(i)("最终得分").ToString() & "分,评为:" & ja12(i)("评查等次").ToString() & "案件。" & Chr(13) & Chr(10)
    ssss &= "评审及分值明细为:" & Chr(13) & Chr(10) 
    Dim ja121 As JArray = Jarray.Parse(ja12(i)("children").ToString())
    For i121 As Integer = 0 To ja121.Count - 1
        ssss &= "(" & i121 + 1 & ")、" & ja121(i121)("卷宗名称").ToString() & "卷中" & ja121(i121)("资料名称").ToString().Replace(".pdf", "").Replace(".png", "") & "的材料因" & ja121(i121)("参考规则").ToString() & "(" & ja121(i121)("分值类型").ToString().Replace("分", "") & ja121(i121)("评分").ToString() & "分);" & Chr(13) & Chr(10)
    Next
    wenben = sss & ssss 
    Output.Show(wenben)
    
Next


Dim time As String = Format(Date.now, "yyyyMMddHHmmss") 
Dim tm As String = ProjectPath & "Attachments\\评查活动报告模板.doc" \'指定模板文件
Dim fl As String = ProjectPath & "Reports\\" & "评查活动报告模板" & time & ".doc" \'指定目标文件
Dim wrt As New WordReport(tm, fl) \'注意这里无需指定表名
\' wrt.AddDataTable("统计报告", "主数据源", "")
wrt.Replace("[统计报告]", wenben) \' 
wrt.Build() \'生成报表
wrt.Quit() \'退出

---------------------------
版本:2022.8.18.1
---------------------------
代码执行出错,错误信息:
System.NullReferenceException: 未将对象引用设置到对象的实例。
   在 Foxtable.WordReport.Build()
   在 UserCode.Test()
---------------------------
确定   
---------------------------




--  作者:有点蓝
--  发布时间:2023/11/18 8:55:00
--  
1、
For i As Integer = 0 To ja12.Count - 1
sss =""
ssss =""
  sss = "在" & ja12(i)("活动名称").ToString() &
……
2、

WordReport

WordReport用于编程生成Word报表。

定义一个WordReport的语法为:

Dim wrt As New WordReport(Table, TemplateFile, ReportFile)

Table: 要打印的表(Table)或表的名称
TemplateFile:字符型,模板文件名称,含路径
ReportFile:字符型,生成的报表文件名称,含路径


--  作者:cnsjroom
--  发布时间:2023/11/18 12:46:00
--  回复:(有点蓝)1、For i As Integer = 0 To ja12.Co...

老师 :直接由json写入到word中  替换[统计报告]中的内容为wenben的值  经测试word中值没有成功切换

Dim time As String = Format(Date.now, "yyyyMMddHHmmss") 
Dim tm As String = ProjectPath & "Attachments\\评查活动报告模板.doc" \'指定模板文件
Dim fl As String = ProjectPath & "Reports\\" & "评查活动报告模板" & time & ".doc" \'指定目标文件
Dim wrt As New WordReport(tm, fl) \'注意这里无需指定表名
\' wrt.AddDataTable("统计报告", "主数据源", "")
wrt.Replace("[统计报告]", wenben) \' 
wrt.Build() \'生成报表

wrt.Quit() \'退出

--  作者:有点蓝
--  发布时间:2023/11/18 13:47:00
--  
请先认真看看帮助:http://www.foxtable.com/webhelp/topics/2890.htm重点理解一下下面的说明,看看帮助的代码是怎么使用WordReport的

定义一个WordReport的语法为:

Dim wrt As New WordReport(Table, TemplateFile, ReportFile)

Table: 要打印的表(Table)或表的名称
TemplateFile:字符型,模板文件名称,含路径
ReportFile:字符型,生成的报表文件名称,含路径





--  作者:cnsjroom
--  发布时间:2023/11/18 13:59:00
--  回复:(有点蓝)请先认真看看帮助:http://www.foxta...
老师  我这个不需要表
word模版中只有[统计报告]
然后将wenben代表的字符串,直接替换word模版中的[统计报告]。

--  作者:有点蓝
--  发布时间:2023/11/18 14:24:00
--  
函数的语法是固定的,就必须这样用。WordReport参数定义是固定的,帮助这样说就只能这样用。不需要表,这个参数也必须添加,也就是第一个参数必须是一个表格,不需要也要随便添加一个。

闭着眼睛随便把别人的语法改了,肯定不会有任何结果

--  作者:cnsjroom
--  发布时间:2023/11/18 15:02:00
--  回复:(有点蓝)函数的语法是固定的,就必须这样用。...
wrt.AddDataTable("统计报告", "主数据源", "select * form {统计报告}")
这样写 也不行还是没有成功替换
是不是替换有字符数的限制??

--  作者:有点蓝
--  发布时间:2023/11/18 15:06:00
--  
和AddDataTable没有半毛钱的关系。

Dim wrt As New WordReport("这里随便加一个表格名称啊!!!!!!!!!",tm, fl)