问题标签 [word-automation]

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.

0 投票
1 回答
1137 浏览

word-automation - Word 拼写检查在 Word 2007/Vista 上运行缓慢

我编写了一个 DLL,它使用 MS Word 对 RichtextBox 的内容进行拼写检查。该项目使用Microsoft Word 11.0 对象库。我已经读到您可以在使用该版本 Word 或更高版本的机器上使用该参考资料,这似乎是正确的。

但是...当我在装有 Windows Vista 和 Word 2007 的机器上的测试应用程序中运行 dll 时,它运行速度非常慢。2007 版的 Word 对象库是否有任何不同,从而使其在自动化过程中变得非常慢?还是在运行时进行某种重新解释,使其表现得像这样?

我是否应该制作不同版本的 dll,一个用于 Word 2003 的机器,一个用于 Word 2007 的机器?这真的会使制作用于许多不同项目的拼写检查 dll 变得毫无意义。

0 投票
3 回答
4467 浏览

.net - 自动化 Word Mailmerge 未按预期工作

我遇到了一些应该在我们的应用程序中生成字母的邮件合并代码的问题。我知道这段代码目前有点粗糙,但在我们整理之前我们正处于“让某些东西工作”阶段。

现在它应该工作的方式,以及当我们手动执行它时的工作方式,是我们有一个文件(fileOut 变量+“.template”),它是一个字母的模板。我们打开该模板,将其合并,然后将其作为文件名保存在 fileOut 变量中。

但是,它所做的是将模板文件的副本保存到文件输出文件名,而不是合并的输出。

我已经搜索过了,我似乎正在用头撞砖墙。

datafile 是包含合并数据的数据文件。

使用相同的文件,如果您手动执行,这一切都有效。

0 投票
4 回答
2863 浏览

c# - 以编程方式打印word文档的目录...总是跳过最后一个文件

尝试以编程方式打印 Word 文档目录时遇到问题。在此示例中,我尝试仅打印带有“3_”前缀的文件。问题是文件不会打印,除非有两个带有 3_ 前缀的文件。我一直在四处寻找这个问题。我打开文件的方式有问题吗?它仅在目录中有两个文件时才有效,在这种情况下,它只会打印出两个文件中的一个。

编辑:我确实尝试了一个消息框,路径是正确的。文件名是正确的。另外,如果我正在查看打印机文件夹中的打印机,则文档会闪烁一秒钟然后消失(我已暂停打印,以便可以看到输出)。如果 word 给我一个错误,为什么它不显示?如果目录中有两个带有 3_ 前缀的文件,为什么这会起作用?

编辑:我认为这是 printout() 方法的问题。当我将应用程序设置为可见并运行它时,文档可以正常打开,但没有打印任何内容。我可以手动打开文档并打印(效果很好)。

编辑:谢谢大家的回答。printout() 方法中的背景参数是问题所在。该程序将在打印完全假脱机之前退出(这就是为什么我会在打印队列中看到文档闪烁并消失的原因。关闭后台打印需要文档保持打开和打印,这是关键。谢谢

0 投票
2 回答
5843 浏览

pia - 安装 2007 兼容包后,Office 主互操作程序集不工作

我有一个 C# 程序,它做了一些 Word 和 Excel 自动化,它使用了 Office 2003 Primary Interop Assemblies。我部署它的方式是将 Interops 包含在 bin 中,我让我的程序从那里引用它,而不是从 GAC 引用它(不是很专业,但它工作了几年)。最近在 3 台机器上安装了 office 2007 兼容包,现在当我的软件尝试调用 Word 或 Excel 时,我收到一个错误:

无法将 Microsoft.Office.Interop.Word.ApplicationClass 类型的 COM 对象转换为接口类型 Microsoft.Office.Interop.Word.Application,此操作失败,因为对具有 IID {00020970-0000 的接口的 COM 组件的 QueryInterface 调用-0000-C000-000000000046} 由于以下错误而失败:库未注册。(来自 HRESULT 的异常:0x8002801D (TYPE_E_LIBNOTREGISTERED))

经过一番搜索,我注意到安装兼容包 Word11 和 Word12 都安装在 GAC 中,与 Excel 相同。

我试图让我的程序引用 GAC 中的 Word11 互操作,但仍然没有帮助。我卸载了 Word12 互操作,但仍然没有帮助。似乎安装它似乎改变了一些注册表设置或者我的软件感到困惑的东西找不到正确的库。

有人有什么想法吗?

0 投票
1 回答
396 浏览

c# - range : 将格式应用于范围内的子部分

我正在用 c# 编写一段代码以在 microsft word 文档中生成报告。

  • 我有一个 2 列的表格。
  • 我选择第二列

    oMainTable.Cell(currentRowNumber, 2).Range

  • 每次我必须在该单元格中写一些东西时,我都会使用上面的代码与 Text 属性、InsertParagraph()、InsertAfter() 等的组合

现在假设我有这个内容:

部分示例内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容。

内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容

内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容

内容 部分示例内容 部分示例内容 部分示例内容 部分示例内容

我想对 someTitle1 和 someTitle2 应用下划线和粗斜体,这样它们就不适用​​于整个范围;并且仅限于这两个文本行。

有什么帮助吗?

谢谢

0 投票
1 回答
1866 浏览

word-2007 - 在 Word 2007 中拆分文档

我有几个 word 文档,想参考和查看其中的特定部分。我曾考虑将这些部分拆分为单独的文档,然后只查看正确的文件,但是否有可能以更好的方式做到这一点?

我考虑过用于向下滚动到正确章节的命令行开关,但没有找到。

是否可以使用单词 api 隐藏文档的各个部分?这样我只能显示正确的部分。

0 投票
4 回答
4559 浏览

automation - 用于自动创建 Microsoft Word 2007 文档的选项

我在我的项目中使用“ Microsoft Word 12.0 对象库”从模板自动创建 Word 文档,但速度慢得令人无法接受。我正在寻找替代方案:我需要从模板创建文档,运行一些宏并将文本和表格插入各种书签​​范围(一些文本格式选项也很好)。我只需要最终文档与Word2007兼容,但更喜欢从.NET轻松获得的解决方案(其他建议也值得赞赏)...

请指教。

0 投票
5 回答
7631 浏览

asp.net - 如何在 .NET 中阅读 Microsoft Word 文档?

如何使用 C# 将 doc、docx 文件读入 .NET。

0 投票
2 回答
4235 浏览

printing - 默认打印机为网络打印机时,Word 2007 Application.ActivePrinter 未设置

我正在尝试使用一些 Word 2007 自动化,我们让用户能够选择要打印的打印机并编译 Word 文档。我们提供在本地或网络打印机上打印的能力。网络打印机在代码中由它们的完全限定路径(打印机名 + 端口,如果有的话)指定。

问题是在 Windows 2008 终端服务器中,当默认为网络打印机时,更改打印机不起作用。当原始默认设置为本地打印机时,它可以正常工作。

我们通过以下方式打印文档:

  1. 将默认打印机更改为用户想要的打印机。(由Application.ActivePrinter完成)
  2. 打印文档。
  3. 将默认打印机改回原来的默认值。

当我在 Word 2007 中将默认打印机设置为网络打印机(重定向打印机)时,它不会更改打印机,但是在 Word 2003 中它确实可以工作,但在我的情况下这不是一个选项。我必须让它与 Word 2007 一起工作。

有更好的解决方案还是我做错了什么?

示例代码如下,我尝试通过在 ActivePrinter 和 strPrinterName 更改上使用断点来调试它。

示例代码的参考:

http://www.erlandsendata.no/english/index.php?d=envbaprintchangeprinter

http://www.ozgrid.com/forum/showthread.php?t=68990

示例代码:

0 投票
1 回答
14938 浏览

c# - 使用 Interop.Word,有没有办法进行替换(使用 Find.Execute)并保留原始文本的理由?

我正在尝试通过 Interop.Word (11.0) 使用 Word 自动化为 Word 文档编写查找/替换代码。我的文档都有用括号括起来的各种字段(未显示在 Document.Fields 中),例如,<DATE>需要替换为DateTime.Now.Format("MM/dd/yyyy"). 查找/替换工作正常。但是,一些被替换的文本是右对齐的,并且在替换时,文本会换行到下一行。执行替换时有什么方法可以保留理由吗?代码如下:

TIA。