Foxtable(狐表)用户栏目专家坐堂 → SaveToPdf 错误


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

主题:SaveToPdf 错误

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
SaveToPdf 错误  发帖心情 Post By:2018/9/26 7:49:00 [显示全部帖子]

老师好,
我们的foxtable版本是2018-9-9开发版。windows7 英文版,office365企业版最新版。
执行下面代码,每次都失败。

Dim Book As New XLS.Book("C:\Users\qs1\Desktop\FileMonitor\J161018-999.xls")
Dim fl As String = "C:\Users\qs1\Desktop\FileMonitor\J169.pdf"

Book.SaveToPDF(fl) '保存为PDF文件

错误提示如下:
.NET Framework 版本:2.0.50727.8793
Foxtable 版本:2018.9.9.1
错误所在事件:自定义函数test
详细错误信息:
Exception has been thrown by the target of an invocation.
Unable to cast COM object of type 'Microsoft.Office.Interop.Excel.ApplicationClass' to interface type 'Microsoft.Office.Interop.Excel._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208D5-0000-0000-C000-000000000046}' failed due to the following error: Interface not registered (Exception from HRESULT: 0x80040155).

在论坛上搜索了所有帖子,除了重装操作系统,试了所有方法,包括升级foxtable,重装office365,删除注册表键值等。
实在不知道怎么办才好。特此求助。谢谢




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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/26 12:44:00 [显示全部帖子]

重装后换成了32位的office 365 (excel 显示是16.0版)
,同样的代码,错误信息改成如下:

Exception has been thrown by the target of an invocation.
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))


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




谢谢老师

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/26 13:07:00 [显示全部帖子]

补充一下:
上述同样环境运行Excel VBA也遇到同样错误提示:

Exception has been thrown by the target of an invocation.
Old format or invalid type library. (Exception from HRESULT: 0x80028018 (TYPE_E_INVDATAREAD))

代码照抄帮助文件:
Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Add
Wb.WorkSheets(1).name = "hhh"
Wb.WorkSheets(1).range("A1").Value = "hhh123"
Wb.SaveAs("C:\123.xls")
App.Quit



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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 5:32:00 [显示全部帖子]

老师的话好难懂,我已经重装了32位的office 365. 最新版不正是对应excel 2016版吗?
我不是已经说了,最初的问题在重装后已经消失,但又出来了新的错误提示。提示信息在上面也给您了。

难道还需要我们把正版程序卸掉,再买个2013或者2010的装上才可以? 
还是我们的foxtable不支持office 最新版一定要退回到某个特定的版本号才可以? 

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 5:36:00 [显示全部帖子]

另外忘了说,我的office365是上周刚买的。原来我电脑上装的就是32位office 2013英文版正版。当时测试运行Excel VBA,也是过不去。错误提示信息一样。


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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 5:43:00 [显示全部帖子]

另外,我上面说的excel 16.0版是微软内部版本号,在excel信息里面显示的。上网查了一下对应excel 2016版。你说的office 2013内部版本号应该是15.0.

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 5:45:00 [显示全部帖子]


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

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 5:57:00 [显示全部帖子]

来自网上的excel版本对比:

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


[此贴子已经被作者于2018/9/27 5:57:43编辑过]

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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 9:19:00 [显示全部帖子]

感谢版主的答复。不过上面的做法没什么帮助,因为公司电脑不可能让我们装盗版的。

不过这个问题我似乎找到了答案,供你们参考:
https://support.microsoft.com/en-us/help/320369/bug-old-format-or-invalid-type-library-error-when-automating-excel

Cause

You receive this error calling an Excel method when the following conditions are true: 
  • The method requires an LCID (locale identifier).
  • You run an English version of Excel. However, the regional settings for the computer are configured for a non-English language.
If the client computer runs the English version of Excel and the locale for the current user is configured for a language other than English, Excel will try to locate the language pack for the configured language. If the language pack is not found, the error is reported.

上面是微软的网站说的,运行英文版excel和采用LCID就会造成这个错误。我给的链接里有解决办法。





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


加好友 发短信
等级:幼狐 帖子:92 积分:1027 威望:0 精华:0 注册:2018/5/31 19:09:00
  发帖心情 Post By:2018/9/27 9:27:00 [显示全部帖子]

下面是微软建议的解决办法,任何一种均可以。建议你们把代码加入你们的程序中,这样就可以避免这个问题再次出现。我这边先试着按微软说的安装多语言支持包。

To work around this problem, you can use one of the following methods:
  • Install the Multilingual User Interface Pack for your version of Office.
  • Execute the Excel method or property by using InvokeMember so that you can specify the CultureInfo for the call. For example, the following code illustrates how you can invoke the Workbooks object Add method with "en-US" as the CultureInfo:
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oBooks As Object = oApp.Workbooks
    Dim ci As System.Globalization.CultureInfo = New System.Globalization.CultureInfo("en-US")
    oBooks.GetType().InvokeMember("Add", Reflection.BindingFlags.InvokeMethod, Nothing, oBooks, Nothing, ci)
  • Or, set the CultureInfo prior to calling the Excel method. For example:
    Dim oApp As New Excel.Application()
    oApp.Visible = True
    oApp.UserControl = True
    Dim oldCI As System.Globalization.CultureInfo = _
    System.Threading.Thread.CurrentThread.CurrentCulture
    System.Threading.Thread.CurrentThread.CurrentCulture = _
    New System.Globalization.CultureInfo("en-US")
    oApp.Workbooks.Add()
    System.Threading.Thread.CurrentThread.CurrentCulture = oldCI
  • Create a 1033 directory under Microsoft Office\Office11. Then, copy excel.exe to the 1033 directory, and rename it as xllex.dll. 

    For more information, click the following link:
    http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx

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