问题标签 [netoffice]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 无法使用 NetOffice 访问我的服务器上的 word 文档,但它可以在本地工作
请阅读整篇文章,这不是一个简单的 NullReferenceException 问题:
我正在尝试使用 NetOffice 打开一个 word 文档以在其上写一些信息。
问题是每次尝试执行此操作时都会得到 à NullReferenceException。
这是代码:
指令 doc.Sections 抛出异常,我认为这是打开文档时的权限问题(而我授予对 ASP.NET、NETWORK SERVICE 和 LOCAL SERVICE 的完全访问权限)
感谢关注
编辑:我想到了一个权限问题,因为它可以在本地工作,但不能在生产服务器中工作(我是我们网络的管理员,所以当我使用应用程序时,我可以访问所有内容,但 IIS 不是这种情况)。不要复制它,这不仅是 NullReferenceException 问题,因为代码看起来是正确的
c# - 为多个单元格设置的 NetOffice.ExcelApi.Range.Value 不会更新条件格式
出于性能原因,我最近进行了代码更改以一次更新多个单元格。代码如下所示:
这工作正常,但如果有多个单元格正在更新,几乎总是存在,那么如果不手动进入单元格并重新应用条件格式,则不会应用单元格中存在的任何条件格式 - 当然用户不愿意做。我可以让它正常工作的唯一方法是返回一次设置一个单元格的值,这不是一个选项。
我尝试设置和切换 worksheet.EnableFormatConditionsCalculation(无效),循环遍历 range.FormatConditions 枚举器并将 ModifyAppliesToRange 设置为另一个单元格并返回(出现“尝试读取或写入受保护的内存。这通常是一个迹象其他内存已损坏”异常)。有任何想法吗?
c# - 将演示文稿添加到新打开的 PowerPoint 应用程序 - 例外
我想启动 PowerPoint 实例,以隐藏其窗口的方式向其添加演示文稿(新的或现有的,都会导致相同的问题)。但是,我在 PowerPoint 中收到运行时错误,上面写着:
Application (unknown-member): Invalid request. There is no active presentation.
当一个窗口可见或已经打开了一个至少有一个演示文稿的 PowerPoint 实例时,它可以正常工作。此外,当我在此运行时错误中单击“结束”时,它无论如何都会正确创建演示文稿。我尝试使用 NetOffice 包装器和 Interop 本身。
我正在使用 Office 2016 32 位。
我希望能够将演示文稿添加到隐藏窗口,因为netApp.Presentations.Add(MsoTriState.msoTrue)
它工作得很好。
c# - NetOffice Visio 报告从 IIS 运行时配置的身份不正确
我正在尝试使用 Visio API 通过使用 NetOffice.VisioApi.InvisibleApp 和 Export 方法将 Visio 文档转换为另一种格式。这可以作为交互式用户使用,但到目前为止还不是来自 IIS。
我知道为什么使用 Microsoft 办公自动化在服务器端应用程序中存在问题的原因。这是一个相对不经常运行的程序。我不能将 OpenXML SDK 用于我的程序,因为其目的是将 Visio 文档呈现为另一种图像格式。
例如,使用 inkscape 的解决方案创建了扭曲的图像,这就是为什么我尝试使用 Visio,它似乎可以很好地呈现它自己的文档。
我还阅读了有关使用 NetOffice 和 IIS 中的 Visio 取得成功的人。
运行程序时,我首先收到一个没有消息的 COMException。
然后,我尝试将标识配置为用于向安装 Visio 的用户运行 Microsoft Visio 2003-2010 绘图组件。因为这是有人为类似问题提供的解决方案。
我还添加了 IIS 应用程序池以有权在 DCOM 配置中启动和激活 Microsoft Visio 2003-2010 绘图组件,因为这是使用 IIS 中的不同对象(字)解决与身份相关的问题的解决方案。
配置后,错误消息是:
异常:System.Runtime.InteropServices.COMException (0x8000401A):检索具有 CLSID {000D0A26-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:8000401a 服务器进程无法启动,因为配置的标识不正确。检查用户名和密码。(来自 HRESULT 的异常:0x8000401A)。
该 CLSID 似乎是类型
你知道我怎么知道配置的身份“不正确”吗?或者,您是否看到可能导致错误的其他问题?
c# - HitHighlight 仅适用于当前范围
我正在使用以下代码在我的文档中查找一些字符串:
作为代码状态中的注释,我希望rng.Find.HitHighlight(findText, WdColor.wdColorAqua);
只在当前范围内工作,而是在整个文档上执行。
有趣的是,如果我从不同的范围开始,这将按我的预期工作......即。
只会HitHighlight
在findText
第一段中。
这是不一致的......关于如何HitHighlight
仅在使用选择的范围内执行的任何想法Find
?
注意:我在 NetOffice 插件中尝试过这个,我得到了相同的行为。
c# - 范围 TextVisibleOnScreen 始终返回 -1
我正在使用以下代码在我的文档中查找一些字符串:
根据文档:
如果范围内的所有文本都可见,则 TextVisibleOnScreen 属性返回 1;如果范围内没有文本可见,则返回 0;如果范围内的某些文本可见而某些不可见,则返回 -1。例如,不可见的文本可以是折叠标题中的文本。
-1
但是,即使文本根本不在屏幕上或所有文本都在屏幕上,该属性也始终存在...这是一个已知问题吗?难道我做错了什么?
c# - 仅为屏幕上的范围获取范围坐标
我目前正在使用以下方法Range
在文档中查找 a 的坐标:
这非常有效,除非它Range
以相当大的距离(相当多的页面)离开屏幕,在这种情况下我得到以下异常:
System.Runtime.InteropServices.COMException (0x800A1066): 命令在 [ProjectName].[TaskpaneName]处的 Microsoft.Office.Interop.Word.Window.GetPoint(Int32& ScreenPixelsLeft, Int32& ScreenPixelsTop, Int32& ScreenPixelsWidth, Int32& ScreenPixelsHeight, Object obj) 失败。 GetRangeCoordinates(Window w, Range r) in [...somePath...][TaskpaneName] .cs:line 66
有没有办法确定 aRange
是否在屏幕上,以便我只能在它出现时调用此方法?
c# - 使用 NetOffice 创建 Excel 文件 (C#) 检索 COM 类时未找到间歇性文件异常
我有一个在 SBS 2008 服务器上运行的程序,该服务器安装了 Office 2007,并在通过电子邮件发送的 Excel 文件中创建报告。我正在使用 NetOffice 来创建 Excel 文件,并且它在大多数情况下都能正常工作。但是,它经常抛出 File Not Found 异常并失败。
完整的例外是:
内部异常:System.IO.FileNotFoundException:检索具有 CLSID {00024500-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:8007007e 找不到指定的模块。(来自 HRESULT 的异常:0x8007007E)。在 System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType) 在 System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType) 在 System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType, Object[] 道具, Boolean bNewObj) 在 System.RuntimeTypeHandle.CreateInstance(RuntimeType 类型, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck) 在 System.RuntimeType.CreateInstanceSlow(Boolean publicOnly,
如果我立即重新运行该程序,它将始终成功运行。
我已经尝试全部重建,替换服务器上的文件,在 VS 2019 和 2017 中编译。
c# - 不访问 IIS 中的 xls 文件
我正在尝试使用 web api 2 服务打开 xls 文件并转换为 pdf。当我在 vs 2013 中启动服务项目时,一切工作正常,但是当我将服务发布到 iis 8.0 并尝试打开 excel 文件时出现错误:
错误:
调用的目标已引发异常。在 System.RuntimeType.InvokeDispMethod(字符串名称,BindingFlags invokeAttr,对象目标,Object[] args,Boolean[] byrefModifiers,Int32 文化,String[] namedParameters)在 System.RuntimeType.InvokeMember(字符串名称,BindingFlags bindingFlags,Binder binder, NetOffice.Invoker.MethodReturn(COMObject comObject, String name, Object[] paramsArray) 上的对象目标、Object[] providedArgs、ParameterModifier[] 修饰符、CultureInfo 文化、String[] namedParams)
此行错误:
我试图解决这个问题:
我将“网络服务”和“IUSRS”权限授予 Microsoft Excel 应用程序
我给应用程序池提供了“网络服务”
我将“网络服务”提供给已发布的文件夹
c# - C# 使用 NetOffice 获取活动 Word
我们有一个 C# WPF 应用程序,它有一个按钮,它只使用默认文档路径作为参数启动 Word,因此用户在保存文档时会自动到达正确的文件夹。
我们使用 NetOffice 启动 Word 并设置默认路径。但是,这会影响加载项的加载。自上次 Office 更新以来,一些用户在使用该按钮启动 Word 时没有加载任何加载项。为了解决这个问题,我尝试简单地使用 Process.Start() 启动 Word(这解决了 AddIns 的消失),然后使用 NetOffice 获取活动的 Word 实例来设置默认文档路径。
但是 NetOffice 总是在使用时启动一个新的 Word 实例:
或者:
如何获取使用 Process.Start() 启动的 Word 实例?我查看了其他人的 NetOffice 示例和问题,但我每次都得到一个新实例。
提前致谢!