word模板生成word文件,偶尔提示文件为只读,需要另存,怎么解决呢?
当前代码为:
Dim e As RequestEventArgs = rq.e
Dim cmd As SQLCommand = rq.cmd
Dim time As String =Format(Date.now,"yyyyMMddHHmmss")
Dim tm As String = ProjectPath & "Attachments\" & e.Values("文书名") &".doc" '指定模板文件
Dim f1 As String = ProjectPath & "mybaobiao\" & e.Values("文书名") & e.Values("创建人") & e.Values("guid") & time &".doc" '指定目标文件
Dim f2 As String = ProjectPath & "mybaobiao\" & e.Values("文书名") & e.Values("创建人") & e.Values("guid") & time &".pdf" '指定目标PDF文件
If FileSys.FileExists(tm) Then
Dim wrt As New WordReport(tm,f1) 疑似这个地方是不是没有完整运行 还是运行过快 导致f1会生成,有对应的文件名及文件,但是文件里面的内容跟tm里面的一样,没有被替换过来,然后会再次生成fl,所以出现了文件只读的情况
wrt.AddDataTable(e.Values("文书名"),"主数据源","Se lect * from {" & e.Values("文书名") & "} where guid = '" & e.Values("guid") & "' ")
cmd.CommandText = "sel ect * from SYS_Dictionary where 字典值='是' and 分类='PDF预览'"
Dim dt As DataTable = cmd.ExecuteReader()
If dt.DataRows.Count>0 Then
wrt.Build()
wrt.SaveToPDF(f2) '保存为PDF文件
wrt.Quit() '退出
e.WriteString("\mybaobiao\" & e.Values("文书名") & e.Values("创建人") & e.Values("guid") & time &".pdf")
Else
wrt.Build()
'wrt.Show()
wrt.Quit() '退出
e.WriteString("\mybaobiao\" & e.Values("文书名") & e.Values("创建人") & e.Values("guid") & time &".doc")
End If
Else
msg(e.Values("文书名") &"[文件不存在或已经被删除!]")
End If
偶尔运行会出现下述错误,提示文件为只读
错误的事件名称项目,HttpRequest
System.Reflection.TargetInvocationException: 调用的目标发生了异常。 ---> System.Runtime.InteropServices.COMException: 此文件为只读。
(D:\...\数据查询通知书a78093b8-c7c3-49fb-b...)
在 Microsoft.Office.Interop.Word.DocumentClass.Save()
在 Foxtable.WordReport.Quit()
在 eWebSer.form385_word_Ajax(Request rq)
--- 内部异常堆栈跟踪的结尾 ---
在 Microsoft.VisualBasic.CompilerServices.Symbols.Container.InvokeMethod(Method TargetProcedure, Object[] Arguments, Boolean[] CopyBack, BindingFlags Flags)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.CallMethod(Container BaseReference, String MethodName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, BindingFlags InvocationFlags, Boolean ReportErrors, ResolutionFailure& Failure)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.ObjectLateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
在 Microsoft.VisualBasic.CompilerServices.NewLateBinding.LateCall(Object Instance, Type Type, String MemberName, Object[] Arguments, String[] ArgumentNames, Type[] TypeArguments, Boolean[] CopyBack, Boolean IgnoreReturn)
在 UserCode.HttpRequest(RequestEventArgs e)
2022-08-25 16:49:52
[此贴子已经被作者于2022/8/25 17:01:02编辑过]