Tag: ms office

Office附加function区:带有2个插件的相同选项卡

我正在尝试使两个单词加载项组出现在同一个选项卡(工具)中,但它们都创建了独特的选项卡(有两个“工具”选项卡)。 我看过这个video,但我使用的是可视设计器,而不是XML。 我可以用某种方式编辑设计器代码来使其工作吗?

如何从SQL Server生成文档(docx或pdf)?

我知道这有点主观,但我正在研究以下情况: 我需要从SQL Server数据库中的数据自动生成许多文档。 将在数据库上安装一个MVC3应用程序以允许数据输入等,并且(可能)有一个“Go”按钮来生成文档。 需要有一些关于如何创建,命名和存储这些文档的业务逻辑(例如,“父”文档获得一个名称并进入一个文件夹,“子”文档获得计算名称并进入子文件夹。 只要输出可以是EN-US和AR-QA(RTL文本),文档可以是PDF或Doc(x)(甚​​至两者) 我知道SSRS,Crystal Reports,VSTO,代码中的“手动”PDF,单词邮件合并等等有很多选项……如果有任何用途,我们已经有了HTML到PDF工具吗? 有没有人对如何解决这个以及“最好”(最实用)的方法有什么现实世界的建议? 我需要在服务器上安装和配置的“额外”越少越好 – 开发越快越好(一如既往!) 到目前为止的调查结果: Word Mail Merge(或VSTO)根本不提供我所需要的简单性,控制性和灵活性 – 真的很遗憾。 很高兴定义一个dotx并能够在单独的基础上将数据传递给它以生成docx。 只有我能够实现这一点(我可能在这里错了)是通过名称循环控制/书签并替换值……凌乱。 OpenXML基于dotx模板创建文档,即使使用OpenXML也不如(IMHO)那么简单。 您必须按名称替换每个Content控件,因此维护不是最简单的任务。 SSRS从表面上看 ,这是一个很好的解决方案(尽管它需要SQL Enterprise),但是如果你想动态生成文件夹和文档,它会变得更加复杂。 数据驱动的订阅非常接近我想要的。 Winnovative HTML to PDF Convertor *这是我们已经拥有的工具(尽管是.Net 2.0版本)。 这允许我生成HTML页面并将它们转换为PDF。 对我来说是一个不错的选择,因为我可以在MVC3网站上运行它并将参数传递给控制器​​以生成PDF。 这使我对文件夹和命名结构进行了更细粒度的控制 – 这种方法的问题只是以正确的方式生成页面。 奖金是它自动给我一个“预览”……基本上只是HTML页面!

通过Office API将多个Word文档另存为HTML

我有大量需要解析的Word文档。 由于它们都是从同一个模板创建的,我认为最好的方法是将它们保存为HTML文件并解析HTML本身。 虽然将单个Word文档保存为HTML非常容易,但我还没有找到一种从Word内部执行批量过程的方法。 因此,我试图找到一种方法来利用Microsoft Office / Word API来实现这一目标。 如何使用Word API将许多Word文档另存为HTML? 提前致谢。 更新:更多细节…… 一些文档扩展名为.doc ,而其他文档扩展名为.docx 。 我希望这不是问题,但如果是,我只需将它们全部转换为.docx ,希望使用API​​或DocX 。 说到DocX,我在作者的博客上看到,可以使用以下代码将.docx文件保存为HTML: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Word = Microsoft.Office.Interop.Word; using Microsoft.Office.Interop.Word; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // Convert Input.docx into Output.doc Convert(@”C:\users\cathal\Desktop\Input.docx”, @”c:\users\cathal\Desktop\Output.doc”, WdSaveFormat.wdFormatDocument); /* * Convert […]

Microsoft.Office.Interop是否可以安全地用于(文件转换)网站?

我正在编写一个关于女巫用户必须添加报告(Word文档)的网站,并且可以查看它们我将* .doc转换为* .pdf,然后通过pdf.js显示它们。 对于转换我使用Microsoft.Office.Interop.Word。 代码看起来像 public void ConvertDocument(string PATH) { FileInfo FILE = new FileInfo(PATH); if (FILE.Extension.ToLower() == “.doc” || FILE.Extension.ToLower() == “.docx” || FILE.Extension.ToLower() == “.docm” || FILE.Extension.ToLower() == “.dotx” || FILE.Extension.ToLower() == “.dotm”) { if (FILE.Length == 0) { return; } object oMissing = System.Reflection.Missing.Value; Word.Application word = new Word.Application(); try { word.Visible […]

如何查看Word文件是否受密码保护?

我正在维护一个归档系统,必须将各种文档格式转换为tif。 我的问题是密码保护的Word文档。 如果文档受密码保护,则Word会弹出一个弹出窗口,要求我输入密码。 如果我可以告诉客户他需要对此做些什么,那么文档是否受密码保护是可以的。 问题是,如果Word提示输入密码,我将无法以编程方式注册。 下面的代码是在没有密码的情况下打开文档的标准互操作方式。 如果我没有输入密码或错误密码,那么我会通过弹出窗口通过Word提示我。 除了使用AutoHotKey查找弹出窗口之外,还有其他方式吗? 如果我可以在doc文件中查找一个字符串或字符来告诉它是否受到保护,那就没问题了。 // Open the document… this.document = wordApplication.Documents.Open( ref inputFile, ref confirmConversions, ref readOnly, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref visible, ref missing, ref missing, ref missing, ref missing); 解: 可以在Word中的VBA宏中执行此操作。 所以为了从C#中创建它,那么你将从C#创建宏并执行它。 我没试过。 但这里是代码: Sub MyMacro() […]

C#将.doc转换为.htm

我试图将.doc文件转换为.htm格式以在ASP.NET MVC页面中查看。 我在C#中使用以下代码: using Microsoft.Office.Core; using Microsoft.Office.Interop.Word; …. Microsoft.Office.Interop.Word.Application objWord = new Microsoft.Office.Interop.Word.Application(); object source = @”C:\Users\XYZ\Desktop\ScreenShot.doc”; object target = @”C:\Users\XYZ\Desktop\ScreenShot.html”; object unknown = Type.Missing; objWord.Documents.Open(ref source, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown, ref unknown); […]

在不启动MSWord的情况下读取.doc文件

我正在尝试打开.doc文件并阅读其内容。 但是,如果不启动MSWord,我无法找到任何方法。 现在我有以下代码: Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application(); object nullObject = System.Reflection.Missing.Value; object file = @”C:\doc.doc”; Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(ref file, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject, ref nullObject); doc.ActiveWindow.Selection.WholeStory(); doc.ActiveWindow.Selection.Copy(); IDataObject data […]

警告:找不到引用的组件“Microsoft.Office.Core”

在构建我的一个项目时,我收到以下警告: Warning 3 Cannot find wrapper assembly for type library “Microsoft.Office.Core”. Warning 4 The referenced component ‘Microsoft.Office.Core’ could not be found. 奇怪的是,构建失败,没有错误。 上面的警告似乎是问题所在。 从Windows Update安装了一些Office 2007更新后,这种情况就开始发生了。 在此之前它正在建设一切都很好。 有没有人遇到过同样的问题? 有关如何在不修改项目的情况下解决此问题的任何想法?

以编程方式比较word文档

我需要比较两个办公文档,在这种情况下是两个word文档并提供差异,这有点类似于SVN中显示的内容。 不是那么大,但至少能够突出差异。 我尝试使用办公室COM DLL,并得到了这个… object fileToOpen = (object)@”D:\doc1.docx”; string fileToCompare = @”D:\doc2.docx”; WRD.Application WA = new WRD.Application(); Document wordDoc = null; wordDoc = WA.Documents.Open(ref fileToOpen, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); wordDoc.Compare(fileToCompare, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); 有关如何进一步处理的任何提示? 这将是一个具有大量点击的Web应用程序。 使用office com对象是正确的方法,还是有其他我可以看的东西?

Outlook中“已发送邮件”上的事件

我正在使用ApplicationEvents_11_ItemSendEventHandler (请参阅http://msdn.microsoft.com/en-us/library/microsoft.office.interop.outlook.applicationevents_11_itemsendeventhandler.aspx )在从Outlook发送项目时进行一些处理。 但是,由于此事件触发“发送”而不是“已发送”,我无法获取某些信息,例如发件人,发送时间等。 物品实际发送后是否会触发另一个事件? 我读过这篇博客文章; http://easyvsto.wordpress.com/2010/07/27/how-to-save-mail-content-when-a-mail-is-sent-from-outlook/但我对依赖出现的物品持谨慎态度在sent items文件夹中,考虑到用户可以禁用此function。 编辑:我应该补充一点,我实际上已经尝试了“观察已发送的项目文件夹”的方法,并注意到ItemAdd事件似乎只发送我发送的第一封电子邮件,然后再重新启动Outlook。 我的代码如下; var sentMail = Application.Session.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderSentMail); sentMail.Items.ItemAdd += new Outlook.ItemsEvents_ItemAddEventHandler(Items_ItemAdd); 我的方法…… void Items_ItemAdd(object item) { MessageBox.Show(((Outlook.MailItem)item).Subject); }