Foxtable(狐表)用户栏目专家坐堂 → 二进制文件上传错误提示


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

主题:二进制文件上传错误提示

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
二进制文件上传错误提示  发帖心情 Post By:2018/9/5 20:24:00 [显示全部帖子]

需求:选中关联表中一行,把这一行的文件生成Pdf,我写了下面代码出错:主要错在红色标注部份?谢谢

If Tables("收款合同信息.资料明细").Current Is Nothing Then
    Return
End If
Dim dr As DataRow = Tables("收款合同信息.资料明细").Current.DataRow
Dim fdr As DataRow = DataTables("收款合同信息").Find("系统编号 = '" & dr("系统编号") & "'")
Dim pth As String = ProjectPath & "Attachments\用户工程\" & fdr("咨询类型") & "\" & fdr("系统编号").SubString(0,4) &  fdr("项目名称") & "\合同管理资料\"
If FileSys.DirectoryExists(pth) = False Then
    FileSys.CreateDirectory(pth)
End If

Dim fl As String = pth & dr("资料名称")
If FileSys.FileExists(fl) AndAlso CRCCheckFile(fl) = dr.SQLGetValue("CRC") Then '如果本地存在同名文件且CRC校验值相同
    '则直接使用本地文件
Else '否则从数据库提取文件
    If dr.SQLLoadFile("附件",fl) = False Then '如果提取文件失败
        Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Return
    End If
End If

Dim app As New MSWord.Application
Try
    Dim doc = app.Documents.Open(fl)
    app.Documents(fl).ExportAsFixedFormat(fl.SubString(0,fl.LastIndexOf(".")) & ".pdf", MSWord.WdExportFormat.wdExportFormatPDF)
    doc.Saved = True
    ' e.Form.Text = "此会议纪要正在生成中....."
    app.Quit
Catch ex As Exception
    msgbox(ex.Message)
    app.Quit
End Try
MessageBox.Show("Pdf已生成!")

Dim ndr As Row = Tables("收款合同信息.资料明细").AddNew()
If ndr.DataRow.RowState = DataRowState.Added Then '如果是新增行,必须先保存才能插入文件
    ndr.Save()
End If
Dim flt As String = dr("资料名称").SubString(0,dr("资料名称").LastIndexOf(".")) & ".pdf"
msgbox(flt)
ndr("资料名称") = flt   '写入资料文件名称
msgbox(22)
ndr.DataRow.SQLInsertFile("附件",flt)   '插入文件
msgbox(33)
ndr.DataRow.SQLSetValue("CRC", CRCCheckFile(flt))   '保存crc检验值

MessageBox.Show("资料Pdf上传成功!")


图片点击可在新窗口打开查看此主题相关图片如下:8882808.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/9/5 21:06:00 [显示全部帖子]

文件名和路径搞错了,已好了,谢谢!
但有个问题excel生成Pdf后,打开pdf后乱码?如下图


图片点击可在新窗口打开查看此主题相关图片如下:222211954.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2018/9/5 21:17:06编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/9/5 23:53:00 [显示全部帖子]

选中关联表中一行,把这一行中的二进制文件下载到本地指定文件夹内,再把这文件成Pdf,再上传到数据库中。word文件没有问题,就是excel文件生成PDF出现乱码。

If Tables("收款合同信息.资料明细").Current Is Nothing Then
    Return
End If
Dim dr As DataRow = Tables("收款合同信息.资料明细").Current.DataRow
Dim fdr As DataRow = DataTables("收款合同信息").Find("系统编号 = '" & dr("系统编号") & "'")
Dim pth As String
If fdr.IsNull("标段名称") Then
    pth = ProjectPath & "Attachments\用户工程\" & fdr("咨询类型") & "\" & fdr("系统编号").SubString(0,4) &  fdr("项目名称") & "\合同管理资料\"
Else
    pth = ProjectPath & "Attachments\用户工程\" & fdr("咨询类型") & "\" & fdr("系统编号").SubString(0,4) &  fdr("项目名称") & "\" & fdr("标段名称") & "\合同管理资料\"
End If
If FileSys.DirectoryExists(pth) = False Then
    FileSys.CreateDirectory(pth)
End If
''======查找word文件========
Dim fl As String = pth & dr("资料名称")
If FileSys.FileExists(fl) AndAlso CRCCheckFile(fl) = dr.SQLGetValue("CRC") Then '如果本地存在同名文件且CRC校验值相同
    '则直接使用本地文件
Else '否则从数据库提取文件
    If dr.SQLLoadFile("附件",fl) = False Then '如果提取文件失败
        Messagebox.Show("附件提取失败,可能并不存在附件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information)
        Return
    End If
End If
''======生成PDF========
Dim app As New MSWord.Application
Try
    Dim doc = app.Documents.Open(fl)
    app.Documents(fl).ExportAsFixedFormat(fl.SubString(0,fl.LastIndexOf(".")) & ".pdf", MSWord.WdExportFormat.wdExportFormatPDF)
    doc.Saved = True
    'e.Form.Text = "此会议纪要正在生成中....."
    app.Quit
Catch ex As Exception
    msgbox(ex.Message)
    app.Quit
End Try
MessageBox.Show("Pdf已生成!")
''========上传PDF=========
Dim ndr As Row = Tables("收款合同信息.资料明细").AddNew()
If ndr.DataRow.RowState = DataRowState.Added Then '如果是新增行,必须先保存才能插入文件
    ndr.Save()
End If

Dim flt As String = fl.SubString(0,fl.LastIndexOf(".")) & ".pdf"
ndr("资料名称") = dr("资料名称").SubString(0,dr("资料名称").LastIndexOf(".")) & ".pdf"   '写入资料文件名称
ndr.DataRow.SQLInsertFile("附件",flt)   '插入文件含路径
ndr.DataRow.SQLSetValue("CRC",CRCCheckFile(flt))   '保存crc检验值
MessageBox.Show("资料Pdf上传成功!")
[此贴子已经被作者于2018/9/5 23:54:36编辑过]

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


加好友 发短信
等级:三尾狐 帖子:767 积分:6119 威望:0 精华:0 注册:2018/2/1 17:26:00
  发帖心情 Post By:2018/9/6 16:54:00 [显示全部帖子]

老师下面这段代码怎么改?

''======生成PDF========
If  dr("资料名称").SubString(dr("资料名称").LastIndexOf(".") + 1).Contains("doc") Then
    Dim app As New MSWord.Application
    Try
        Dim doc = app.Documents.Open(fl)
        app.Documents(fl).ExportAsFixedFormat(fl.SubString(0,fl.LastIndexOf(".")) & ".pdf", MSWord.WdExportFormat.wdExportFormatPDF)
        doc.Saved = True
        'e.Form.Text = "此会议纪要正在生成中....."
        app.Quit
    Catch ex As Exception
        msgbox(ex.Message)
        app.Quit
    End Try
Else
    Dim app As New MSExcel.Application
    Try
        Dim xls = app.Documents.Open(fl)
        app.Documents(fl).ExportAsFixedFormat(fl.SubString(0,fl.LastIndexOf(".")) & ".pdf", MSExcel.WdExportFormat.wdExportFormatPDF)
        xls.Saved = True
        'e.Form.Text = "此会议纪要正在生成中....."
        app.Quit
    Catch ex As Exception
        msgbox(ex.Message)
        app.Quit
    End Try
End If

 回到顶部