Foxtable(狐表)用户栏目专家坐堂 → 生成word文件时,总是提示被其他进程打开


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

主题:生成word文件时,总是提示被其他进程打开

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
生成word文件时,总是提示被其他进程打开  发帖心情 Post By:2016/6/3 10:45:00 [只看该作者]

版主:

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 10:47:00 [只看该作者]

版主:  
     生成word文件时,总是提示被其他进程打开,而且每次生成总是要执行好多次,说不定哪一次就成功了。提示如下:
    图片点击可在新窗口打开查看

    另外类似生成EXCEL文件时,也是如此。不知道为什么哪里出错了?

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 10:49:00 [只看该作者]

附件已经上传,为什么显示不出来。
显示信息如下:

图片点击可在新窗口打开查看此主题相关图片如下:文件已经被其他文件打开.jpg
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 10:55:00 [只看该作者]

 1、你是不是循环多次生成了?

 

 2、你调出任务管理器,把没关闭的winword、excel的进程杀死掉。


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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 10:59:00 [只看该作者]

已经调出任务管理器,关闭了winword、excel的进程杀死掉。以前是能够生成的,近期就不行了。
我看看是否多次循环生成了。

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 11:00:00 [只看该作者]

实例上传上来测试。

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 11:01:00 [只看该作者]

下面是代码,帮我看看有无问题:
'根据当前任务的任务ID(Vars("任务输入_任务ID")), 找到当前记录, 并指向该记录
Dim dr As DataRow
dr = DataTables("任务表").Find( "任务ID = '" & Vars("任务输入_任务ID") & "'")
'MessageBox.Show("dr(ID)=" & dr("ID"), "断点01")
If dr IsNot Nothing Then
    Dim wz As Integer = Tables("任务表").FindRow(dr)
    If wz >= 0 Then
        Tables("任务表").Position = wz
    End If
End If
'MessageBox.Show("dr(ID)=" & dr("ID"), "断点02")
'MessageBox.Show("Tables(任务表).Current(ID)=" & Tables("任务表").Current("ID"), "断点02")

'根据模板文件形成任务单
Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")                           '定义显示窗口
Dim tm As String  = ProjectPath & "Attachments\TaskSchedule_Begin.docx"                  '指定模板文件
Dim fl As String = ProjectPath & "Reports\TaskSchedule_Begin.docx"                       '指定目标文件
Dim wrt As New WordReport(Tables("任务表"), tm, fl)                                      '定义一个WordReport

'形成任务下发要求
Dim ExecProcedure As String = ""                                                                                             '定义执行过程字符串

Dim count2 As Integer = 0                                                                                                    '定义计数器, 任务表.任务子表的前2条记录, 不放到执行过程中
For Each r As Row In Tables("任务表.任务子表").rows                                                                          '逐行生成执行过程:日期+执行过程
'MessageBox.Show("count2=" & count2 & ", r(执行过程)=" & r("执行过程")   )
    If count2 = 1 Then                                                                                                       '从第三行开始形成, 即 count >= 2
        'ExecProcedure = ExecProcedure & Format(r("时间"), "yyyy-MM-dd") & ":  " & r("执行过程") & VbCrLf                    '逐行形成, 后面加回车换行符
        ExecProcedure = Format(r("时间"), "yyyy年MM月dd日") & ": " & chr(13) & r("执行过程") & chr(10)                              '用第二行形成, 后面加回车换行符
        ExecProcedure = ExecProcedure.Replace(chr(13) & chr(10) , chr(13))                                                   '将 1 个 回车换行符, 处理为回车符
        ExecProcedure = ExecProcedure.Replace(chr(13) , chr(13) & "    ")                                                     '这样处理后, 不管是日期行, 还是普通行, 都缩进 4 个空格, 因此, 需要把日期行缩进的四个空格删除掉
        ExecProcedure = ExecProcedure.Replace(chr(13) , chr(13) & chr(10))                                                   '将 1 个 回车符, 处理为回车换行符
        Exit For
    End If
    count2 = count2 + 1
    '        wrt.BuildOne(r)
Next
'MessageBox.Show("ExecProcedur=" & ExecProcedure)
wrt.Replace("[执行过程任务下发]",ExecProcedure)                                                                               '显示第二条记录, 第一条要包含任务下发说明.

wrt.Build()                                                                              '形成文件
wrt.Quit()                                                                               '退出形成过程
wbr.AddRess = fl                                                                         '在 WebBrowser1 中, 显示形成的WORD文件


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/6/3 11:04:00 [只看该作者]

build之前,要先设置

 

wbr.AddRess = Nothing

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("WinWord")
For Each p As System.Diagnostics.Process In ps
    If p.MainWindowTitle = Nothing Then  p.kill
Next

'system.Threading.Thread.sleep(3000)

 

然后再

 

wrt.Build()                                                                              '形成文件
wrt.Quit()                                                                               '退出形成过程
wbr.AddRess = fl      

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 11:15:00 [只看该作者]

好的。我把上一段加上。困扰了好几天了。谢谢了。

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


加好友 发短信
等级:五尾狐 帖子:1049 积分:8150 威望:0 精华:0 注册:2011/10/11 11:13:00
  发帖心情 Post By:2016/6/3 11:18:00 [只看该作者]

我加上后,没反应了,从任务管理器查看,是正常状态。

 回到顶部
总数 18 1 2 下一页