Foxtable(狐表)用户栏目专家坐堂 → 为什么生成PDF时,感觉行数少(2行)时,一下生成了,多时(20行)生成不了?


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

主题:为什么生成PDF时,感觉行数少(2行)时,一下生成了,多时(20行)生成不了?

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
为什么生成PDF时,感觉行数少(2行)时,一下生成了,多时(20行)生成不了?  发帖心情 Post By:2016/9/16 15:00:00 [只看该作者]

Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
 Dim tmp As String = ProjectPath & "Attachments\主材选型确认表.xls"
 Dim rpt As String = ProjectPath & "Reports\主材选型确认表.pdf"
 Dim Book As New XLS.Book(tmp)
 Book.Build() 
Book.SaveToPDF(rpt) '保存为pdf文件
 wbr.AddRess = rpt


为什么生成PDF时,感觉行数少(2行)时,一下生成了,多时(20行)生成不了?

我点行生
图片点击可在新窗口打开查看此主题相关图片如下:uc截图20160916145943.jpg
图片点击可在新窗口打开查看
成少的,再点生成多的,有时又生成出来了。

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/9/16 15:05:00 [只看该作者]

好像都生成不了了。不明白什么意思 。

我用XLS直接生成文件,可以。正常。只是PDF预览不成生。

Dim Book As New XLS.Book(ProjectPath & "Attachments\主材选型确认表.xls")
Dim str As String =Tables("材料选型").Current("合同名称")
If str <> "" Then
    Dim dlg As New SaveFileDialog '定义一个新的SaveFileDialog
    dlg.Filter= "Excel文件|*.xls" '设置筛选器
    dlg.FileName=str & "-" &Forms("材料选型").Name
    If dlg.ShowDialog = DialogResult.Ok Then
        Book.Build() '生成细节区
        Book.Save(dlg.FileName)
        Dim Proc As New Process
        Proc.File = dlg.FileName
        Proc.Start()
    End If
Else
    MessageBox.show("请选择要生成的'材料选型'表的订单!")
End If


我是OFFICE 2007 但是已经安装 了,转PDF插件的。
[此贴子已经被作者于2016/9/16 15:24:02编辑过]

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/9/16 15:32:00 [只看该作者]

再试了一下,用XLS生成预览,也不行了。好像第一次能生成,后面的都 不能生成了。

Dim wbr As WinForm.WebBrowser = e.Form.Controls("WebBrowser1")
Dim tmp As String = ProjectPath & "Attachments\主材选型确认表.xls"
Dim rpt As String = ProjectPath & "Reports\主材选型确认表.xls"
Dim Book As New XLS.Book(tmp)
Book.Build() 
Book.Save(rpt)
wbr.OfficeToolBar = True '如果不需要显示工具栏,可删除此行代码
wbr.AddRess = rpt

 回到顶部
帅哥,在线噢!
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/17 9:47:00 [只看该作者]

因为在浏览器里打开,已经占用了文件,所以第二次文件就不能覆盖保存到同一个位置了。

 回到顶部
帅哥,在线噢!
有点蓝
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110579 积分:562791 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/9/17 9:49:00 [只看该作者]


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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/9/24 11:33:00 [只看该作者]

这个,还是无法预览,有没有解决办法?

我用: http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=88255&authorid=0&page=0&star=2  大红老师下面的代码,也不行。

 比较麻烦,你需要把对应的 excel 进程杀死才行的。不然在webbrowser里面的文件,就一直是打开状态,即便设置了address,也需要一段时间才会结束进程的。

 

web控件.Address = Nothing

GC.Collect()

 

Dim ps As  System.Diagnostics.Process() = System.Diagnostics.Process.GetProcessesByName("excel")
For Each p As System.Diagnostics.Process In ps

    msgbox(p.MainWindowTitle)
    If p.MainWindowTitle = Nothing Then  p.kill
Next



 回到顶部
帅哥,在线噢!
有点蓝
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

System.Diagnostics.Process.GetProcessesByName("excel")

这里的excel你要改成打开了pdf的进程,到任务管理器里查看一下

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


加好友 发短信
等级:四尾狐 帖子:843 积分:5982 威望:0 精华:0 注册:2013/6/29 9:36:00
  发帖心情 Post By:2016/9/24 12:16:00 [只看该作者]

我试过,这种杀进程,我也试了。不行。
我把:EXCEL,改成了:pdf的进程名。也不行。


 回到顶部
帅哥,在线噢!
有点蓝
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


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

上传例子测试

 回到顶部