Tag: ms office

使用Micorsoft.Office.Interop(对象库)通过IIS 7读取word doc时出错

当从IIS运行代码时,我在阅读文档时遇到问题。 它不是在阅读文档并抛出错误“在尝试保存activedocument时没有文档是opne。”。 m_word.Documents.Open(ref FileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing); m_word.ActiveDocument.SaveAs2(ref FileName_rtf, ref FileFormat, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref missing1, ref […]

打开并修改Word文档

我想使用“Microsoft.Office.Interop.Word”打开保存在我的服务器中的word文件。 这是我的代码: object missing = System.Reflection.Missing.Value; object readOnly = false; object isVisible = true; object fileName = “http://localhost:52099/modelloBusta/prova.dotx”; Microsoft.Office.Interop.Word.ApplicationClass applicationWord = new Microsoft.Office.Interop.Word.ApplicationClass(); Microsoft.Office.Interop.Word.Document modelloBusta = new Microsoft.Office.Interop.Word.Document(); try { modelloBusta = applicationWord.Documents.Open(ref fileName, ref missing, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref […]

如何在没有Application.Run的情况下从VBE加载项运行宏?

我正在为VBE编写COM加载项,其中一个核心function是在单击命令栏按钮时执行现有的VBA代码。 代码是用户在标准(.bas)模块中编写的unit testing代码,其模块如下所示: Option Explicit Option Private Module ‘@TestModule Private Assert As New Rubberduck.AssertClass ‘@TestMethod Public Sub TestMethod1() ‘TODO: Rename test On Error GoTo TestFail ‘Arrange: ‘Act: ‘Assert: Assert.Inconclusive TestExit: Exit Sub TestFail: Assert.Fail “Test raised an error: #” & Err.Number & ” – ” & Err.Description End Sub 所以我有这个代码获取主机Application对象的当前实例: protected HostApplicationBase(string applicationName) { Application […]

在C#中使用COM互操作时的RCW和引用计数

我有一个使用Office互操作程序集的应用程序。 我知道运行时管理的“运行时可调用包装器(RCW)”。 但我不太确定引用计数如何增加。 MSDN说, RCW只保留对包装的COM对象的一个​​引用,而不管调用它的受管客户端的数量。 如果我理解正确,在以下示例中, using Microsoft.Office.Interop.Word; static void Foo(Application wrd) { /* …. */ } static void Main(string[] args) { var wrd = new Application(); Foo(wrd); /* …. */ } 我将实例wrd传递给另一个方法。 但这不会增加内部引用计数。 所以我想知道引用计数增加的场景是什么? 任何人都可以指出引用计数增加的情况吗? 另外我读了一些博客,说在使用COM对象编程时避免使用双点。 像wrd.ActiveDocument.ActiveWindow这样的东西。 作者声称编译器创建单独的变量来保存将增加引用计数器的值。 恕我直言,这是错误的,第一个例子certificate了这一点。 那是对的吗? 任何帮助都会很棒!

在c#中的任意起始索引上初始化数组

是否可以在c#中初始化一个数组,例如,subindex 1? 我正在使用Office互操作,并且每个属性都是一个从1开始的对象数组(我假设它最初是在VB.NET中编写的),你不能修改它,你必须设置整个数组才能接受它变化。 作为一种解决方法,我正在克隆原始数组,修改那个数组,并在完成后将其设置为整体。 但是,我想知道是否有可能创建一个新的非零基数组

使用office 2010 COM的asp.net Web服务

我正在编写一个Web服务,并希望将.docx或.doc更改为.xps。 我正在使用office com来帮助我保存为.xps格式如下: [WebMethod] public string GetDocPreviewUrl(string m_userName, string m_orgFileName) { string m_returnUrl = “”; string m_orgFilePath = _currentDirectory + “\\” + m_userName + “\\” + m_orgFileName; if (File.Exists(m_orgFilePath)) { string m_xpsFilePath = _currentDirectory + “\\” + m_userName + “\\” + Path.GetFileNameWithoutExtension(m_orgFileName) + “.xps”; OfficeToXpsConversionResult m_converstionResult = OfficeToXps.ConvertToXps(m_orgFilePath, ref m_xpsFilePath); m_returnUrl = _baseUrl + m_userName […]