Foxtable(狐表)用户栏目专家坐堂 → josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错 并且输出重复数据??


  共有964人关注过本帖树形打印复制链接

主题:josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错 并且输出重复数据??

帅哥哟,离线,有人找我吗?
cnsjroom
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
josn内容直接代码替换word模版中指定的字符 在 Foxtable.WordReport.Build()出错 并且输出重复数据??  发帖心情 Post By:2023/11/18 2:01:00 [只看该作者]

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()
---------------------------
确定   
---------------------------




 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)1、For i As Integer = 0 To ja12.Co...  发帖心情 Post By:2023/11/18 12:46:00 [只看该作者]

老师 :直接由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() '退出

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)请先认真看看帮助:http://www.foxta...  发帖心情 Post By:2023/11/18 13:59:00 [只看该作者]

老师  我这个不需要表
word模版中只有[统计报告]
然后将wenben代表的字符串,直接替换word模版中的[统计报告]。

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/18 14:24:00 [只看该作者]

函数的语法是固定的,就必须这样用。WordReport参数定义是固定的,帮助这样说就只能这样用。不需要表,这个参数也必须添加,也就是第一个参数必须是一个表格,不需要也要随便添加一个。

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

 回到顶部
帅哥哟,离线,有人找我吗?
cnsjroom
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1571 积分:11238 威望:0 精华:0 注册:2021/1/17 17:06:00
回复:(有点蓝)函数的语法是固定的,就必须这样用。...  发帖心情 Post By:2023/11/18 15:02:00 [只看该作者]

wrt.AddDataTable("统计报告", "主数据源", "select * form {统计报告}")
这样写 也不行还是没有成功替换
是不是替换有字符数的限制??

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:107304 积分:545781 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2023/11/18 15:06:00 [只看该作者]

和AddDataTable没有半毛钱的关系。

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

 回到顶部