Tag: ms word

我们可以使用multithreading将Microsoft Word文档转换为C#中的HTML吗?

我有一个Windows服务,它会轮询数据库中任何类型为doc,docx,pdf和rtf的上传文档,并将它们转换为HTML并将它们保存到本地文件系统中。 文档从数据库中提取并在内存中排队,然后由多个线程拾取以从共享队列进行处理。 我面临的问题是,处理在一段时间内会变慢。 转换在最初几天发生得更快,对于大小为50 KB的文档说2秒,对于同一文档几天时间说20秒后更慢。 随着时间的推移,我所能看到的是处理时间的下降趋势。 我无法确定导致这种下降趋势的原因。 即使重新启动Windows服务也无济于事。 Microsoft Office安装在Windows Server上以进行文档转换。 每天有近2000个文档正在转换为HTML。 所以我的问题是我们可以使用multithreading将Microsoft Word文档处理为HTML吗?

STA中的Akka.net演员

我需要将不同格式的数千个ms办公文档转换为一种通用格式。 为了加快速度,我将使用akka.net进行并行化。 WordSaveAsActor应该: 在单线公寓中运行 持有Word应用程序实例 在此实例上进行COM调用,例如SaveAs(..),其中包含来自多个并行线程的接收消息的路径 任何崩溃都会重启自己 甚至可以在STA中运行akka.net actor吗? 如果我以这种方式使用akka.net,有什么顾虑吗?

如何逐行阅读MS Word段落和表格内容

我正在使用Microsoft.Office.Interop.Word在C#(3.5)中阅读word文档。 逐行读取,将行拆分为数组[]并处理每一行的行,并根据一些业务逻辑替换一些单词并在替换单词后,用转换后的行替换整行。 直到现在每件事情都很好。 现在我有一些word文档,那些是段落和表格。 我想逐一阅读表中的每一列,并替换特定列中列的内容。 更新 使用Office Automation 1. Opening word file. 2. Moving cursor to top of the document 3. Selecting first line using (`wordApp.Selection.endKey`) and processing all words 4. After processing the words replacing the selected line with the processed line. 5. Using wordApp.Selection.MoveDown(ref lineCount, ref countPage, ref MISSING); moving next line processed […]

如何使用C#将表粘贴到Ms-Word文档的末尾

我有一个预制的Word模板,有一张桌子。 我想打开它,然后在文档的末尾添加(粘贴)另一个表。 问题是它不会转到文档的末尾,而是将新表粘贴到原始表的第一个单元格中。 任何帮助将不胜感激。 //previous code copied a table from another document Object oTempPath = “C:\\Temp\\Logtemp.doc”; Object defaultTemplate = “C:\\Temp\\LogContemp.doc”; oDoc = oWord.Documents.Open(ref defaultTemplate, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); object […]

如何读取“.doc”文件或如何使用ASP.NET将其转换为“.docx”

这是我面临的两个问题,在这两个问题中应该解决,以使我的项目工作。 所以这些是: 如何阅读“.doc”文件, 而不使用Word自动化或Aspose.Words等任何付费SDK 。 (如果第一个不可能那么) 如何将“.doc”文件转换为“.docx”? 不使用Word自动化或Aspose.Words等任何付费SDK 。 搜索了很多,我发现只有.docx的开源解决方案。 这是在服务器上完成的,因此没有安装Word。

从C#开始,打开一个任意应用程序

相关问题[stackoverflow] 在这里 。 我正在努力做到这一点,但我想更进一步。 我想使用文件类型的默认编辑器打开任意文件。 从那时起,我希望允许我的用户像往常一样与文件进行交互,或者继续在我的应用程序中工作。 扩展名是用户完成编辑后发生的事情。 有没有办法可以从外部应用程序捕获一个close(并且理想的保存)事件,并将其用作触发器来执行其他操作? 就我的目的而言,跟踪外部应用程序的关闭就行了。 我可以在具体情况下这样做。 例如,我可以从我的应用程序中打开Word实例并跟踪我的应用程序感兴趣的事件。 但是,我想将我的应用程序与Word分离。我希望允许我的用户使用他们选择的任何文档编辑器,然后在后台管理正在编辑的文件的存储。

将byte 作为文件打开而不首先将其实际保存为文件

打开在数据库中存储为byte []的Word文件的最佳方法是什么? 我必须将一些文档存储在Access数据库中–Word文件,2003及更高版本 – 在严格用于CD的应用程序上。 不幸的是,他们必须在数据库中,不能存放在文件夹中。 我将它们存储为OLE对象,我可以将它们作为byte []进行读取和写入。 但是,我不知道在Word中重新打开这些文档的最佳方法。 现在我正在使用FileStream在某处重新创建文件,然后拍摄System.Diagnostics.Process.Start(filename)以使其打开。 这将在政府计算机上使用,有时可能会有一些时髦的安全规则,所以我不知道这是否是最好的方法。 是否可以打开以前存储为byte []的文件而不使用保存到硬盘驱动器的任何中间文件? 我知道他们至少会拥有Word 2003,所以我愿意使用Word互操作。 谢谢你的任何输入!

呼叫被被叫方拒绝了。 (来自HRESULT的exception:0x80010001(RPC_E_CALL_REJECTED))

我有一个小的C#Winforms应用程序,它使用Word.Interop获取单个邮件合并文档,复制每个部分,将该部分粘贴到它自己的文档中,并单独保存。 我保持(有时随机)收到错误消息: Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) Call was rejected by callee. (Exception from HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) 。 我测试了下面的代码,当我使用断点时,我从未收到过此消息。 但是,如果我让它运行不受限制,它似乎在我的行oNewWord.ActiveDocument.Range(0, 0).Paste(); 。 什么是更奇怪的,有时候我得到了预期的消息,其他时候处理似乎只是挂起,当我在Visual Studio中按PAUSE时,它显示我当前在我的exception消息框行。 有谁知道如何解决这个问题? 码: public void MergeSplitAndReview() { try { // Mail Merge Template Word.Application oWord = new Word.Application(); Word.Document oWrdDoc = new Word.Document(); // New Document Instance […]

使用OpenXml调用AddAlternativeFormatImportPart后损坏文档

我试图在.docx文件中创建一个AddAlternativeFormatImportPart,以便通过AltChunk在文档中引用它。 问题是下面的代码导致docx文件读取为Word损坏,无法打开。 string html = “some html code.” string altChunkId = “html234”; var document = WordprocessingDocument.Open(inMemoryPackage, true); var mainPart = document.MainDocumentPart.Document; var mainDocumentPart = document.MainDocumentPart; AlternativeFormatImportPart chunk = mainDocumentPart.AddAlternativeFormatImportPart (AlternativeFormatImportPartType.Xhtml, altChunkId); Stream contentStream = chunk.GetStream(FileMode.Open,FileAccess.ReadWrite); StreamWriter contentWriter = new StreamWriter(contentStream); contentWriter.Write(html); contentWriter.Flush(); { … } mainPart.Save();

如何将WordOpenXML属性转换为System.IO.Packaging.Package?

我一直在尝试使用Visual Studio 2008在C#中构建Outlook 2010插件。我能够从Microsoft.Office.Interop.Outlook.Inspector对象获取Microsoft.Office.Interop.Outlook.Inspector对象,它表示当前正在编辑的电子邮件。 据我所知,这个DocumentClass也用于其他各种情况(通常用于Microsoft Word扩展,不出所料)。 该类有一个名为WordOpenXML的属性,它似乎是构成.docx包的所有文件的XML表示forms,在将此Word文档另存为.docx将保存到磁盘。 这个属性非常有用的一种方法是它是否可以在内存中转换为System.IO.Packaging.Package对象; 即。 反序列化它。 有谁知道是否有一种简单的方法可以做到这一点,还是我需要编写一些XML解析代码来手动完成它?