以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [NEW]关于WORD报表的图片引用问题,图片存在FTP中[追加提问并附附件]。  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=50258)

--  作者:liguichuan
--  发布时间:2014/5/3 14:49:00
--  [NEW]关于WORD报表的图片引用问题,图片存在FTP中[追加提问并附附件]。

第一次问的问题:有一个员工表,其中有一列[相片]列,是远程FTP文件,WORD报表中设置为:[&相片,90,105]

但是在生成报表时无法显示出图片,这个问题怎么解决呀,其实远程文件系统已经默认同步在“RemoteFiles”文件中了。

 

追加问题:现在通过在表中添加一表达式辅助列,将对应的远程路径修改成与本地路径相对应的路径了。生成单条记录的报表没有问题,但是在生成勾选行时存多问题,主要是运用了“ReplaceWithImage”现先将项目文件附上来。

存在问题1、在使用以下代码时,勾选多行的情况下,打印出来的记录除相片成生总是第一行的相片外,其它正常。主要想搞清楚为什么相片总是显示第一行的指定相片,第二条记录及以后的相片为什么没有生成,是不是“ReplaceWithImage”是整体一次性替换有,而不是每次使用时替换。

\'\'\'
DataTables("通讯录").DataCols("相片").RaiseDataColChanged() \'强制触发该列"DataColChanged"事件

Dim tm As String  = ProjectPath & "Attachments\\通讯录.doc" \'指定模板文件
Dim fl1 As String = ProjectPath & "Reports\\人员信息卡_" & CStr(Date.Now).Replace("-","").Replace(" ","").Replace(":","") & ".doc" \'指定目标文件
Dim fl2 As String = ProjectPath & "Reports\\人员信息卡_" & CStr(Date.Now).Replace("-","").Replace(" ","").Replace(":","") & ".pdf" \'指定目标PDF文件
Dim wrt As New WordReport(Tables("通讯录"),tm,fl1) \'定义一个WordReport
Dim 勾选行 As List(of Row) = Tables("通讯录").GetCheckedRows
If 勾选行.Count > 0 Then
    Dim Result As DialogResult
    Result = MessageBox.Show("您已勾选了:" & 勾选行.Count & "行数据,请确认是否继续生成人员信息卡片。", "确认操作!!!", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        For Each r As Row In 勾选行 \'逐行生成报表

            wrt.ReplaceWithImage("[本地相片辅助列]",r("本地相片辅助列"),90,115) \'把文字代换成图片
            wrt.BuildOne(r)

        Next
            wrt.Quit() \'退出
        MessageBox.Show("生成完毕。","操作成功提示!!!",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
Else
    MessageBox.Show("您尚未勾选任何行,请确认勾选后再进行操作。","操作出错提示!!!",MessageBoxButtons.OK,MessageBoxIcon.Warning)
End If

-------------------------------------------------------------------------------------------------------------------------------

 

问题2、在改写成一面的代码后,打印出来的记录比如勾选了两行,但却只能生成第二条记录,第一行记录没有办法生成。代码哪里错了?

\'\'\'
DataTables("通讯录").DataCols("相片").RaiseDataColChanged() \'强制触发该列"DataColChanged"事件

Dim tm As String  = ProjectPath & "Attachments\\通讯录.doc" \'指定模板文件
Dim fl1 As String = ProjectPath & "Reports\\人员信息卡_" & CStr(Date.Now).Replace("-","").Replace(" ","").Replace(":","") & ".doc" \'指定目标文件
Dim fl2 As String = ProjectPath & "Reports\\人员信息卡_" & CStr(Date.Now).Replace("-","").Replace(" ","").Replace(":","") & ".pdf" \'指定目标PDF文件

Dim 勾选行 As List(of Row) = Tables("通讯录").GetCheckedRows
If 勾选行.Count > 0 Then
    Dim Result As DialogResult
    Result = MessageBox.Show("您已勾选了:" & 勾选行.Count & "行数据,请确认是否继续生成人员信息卡片。", "确认操作!!!", MessageBoxButtons.YesNo, MessageBoxIcon.Question)
    If Result = DialogResult.Yes Then
        For Each r As Row In 勾选行 \'逐行生成报表
            Dim wrt As New WordReport(Tables("通讯录"),tm,fl1) \'定义一个WordReport
            wrt.ReplaceWithImage("[本地相片辅助列]",r("本地相片辅助列"),90,115) \'把文字代换成图片
            wrt.BuildOne(r)
            wrt.Quit() \'退出
        Next

        MessageBox.Show("生成完毕。","操作成功提示!!!",MessageBoxButtons.OK,MessageBoxIcon.Information)
    End If
Else
    MessageBox.Show("您尚未勾选任何行,请确认勾选后再进行操作。","操作出错提示!!!",MessageBoxButtons.OK,MessageBoxIcon.Warning)
End If

----------------------------------------------------------------------------------------------------------------------

 

代码不同之处在于标注成红色的内容。谢谢各位。

 

 下载信息  [文件大小:   下载次数: ]
点击浏览该文件:项目文件.rar

[此贴子已经被作者于2014-5-5 12:18:07编辑过]

--  作者:Bin
--  发布时间:2014/5/4 8:53:00
--  
这个暂时不能引用软件远程文件,或者你下载到attatchments目录看看吧
--  作者:有点甜
--  发布时间:2014/5/4 9:10:00
--  

 楼主你可以用这个方法,结合表达式就行了

 

[&&图片文件,宽度,高度] 打印指定的图片文件,文件事先复制到Images或Attachments目录下,则只需指定文件名,例如:

[&&Denmark.png,48,48]

否则需要包括路径,例如:

[&&c:\\data\\Denmark.png,48,48]

 

<表达式> 对表达式进行计算,采用VBScript语法和函数,VBSCript提供了很多函数,具体请参考:VBScript参考

例如你要将出生日期以中文大写的形式打印出来,可以这样设置模板:

<CUDATE([出生日期])>


--  作者:有点甜
--  发布时间:2014/5/4 9:13:00
--  
方案二:多加一列图片列,存放路径在RemoteFiles里,修改ftp图片列的时候,对应修改这一图片列的名字。
--  作者:狐狸爸爸
--  发布时间:2014/5/4 9:16:00
--  
以后改一下,可以直接从ftp引用算了。
--  作者:liguichuan
--  发布时间:2014/5/4 18:59:00
--  
我增加了一列表达式列的辅助列,WORD报表引用时用辅助列里面的内容,但还是出不来,我再检查一下是不是有问题。总觉得我的WORD有问题,就算不引用图片,生成一个十几行的报表也要花很长时间。
--  作者:有点甜
--  发布时间:2014/5/4 19:23:00
--  
以下是引用liguichuan在2014-5-4 18:59:00的发言:
我增加了一列表达式列的辅助列,WORD报表引用时用辅助列里面的内容,但还是出不来,我再检查一下是不是有问题。总觉得我的WORD有问题,就算不引用图片,生成一个十几行的报表也要花很长时间。

 

用例子说明问题......


--  作者:nothing
--  发布时间:2014/5/4 22:38:00
--  
以下是引用狐狸爸爸在2014-5-4 9:16:00的发言:
以后改一下,可以直接从ftp引用算了。

期待,早点改好


--  作者:liguichuan
--  发布时间:2014/5/5 19:06:00
--  
怎么没有人来解答呀?
--  作者:有点甜
--  发布时间:2014/5/5 19:25:00
--  
以下是引用liguichuan在2014-5-5 19:06:00的发言:
怎么没有人来解答呀?

 

 

 以后你修改原帖的时候,记得顶一下,不然就沉下去了。

 

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:项目文件.zip