Tag: ms word

将 / Embed转换为aw:drawing

我有一个V:Shape我假设的V:Shape来自.Doc文件转换为.Docx文件,但在我编写的代码中,我想要一个DocumentFormat.OpenXml.Drawing.Pictures.Picture 。 有没有办法以编程方式转换为Picture ? 我正在使用的片段是: foreach (var item in value) { if (!item.Descendants().Any()) //pictures are processed differently – they’re an absolute s**t storm to code… { p.Append(item.CloneNode(true)); } else { p.Append(CreateImageRun(source, item, target, f)); } } public Run CreateImageRun(WordprocessingDocument sourceDoc, Run sourceRun, WordprocessingDocument target, FooterPart footerPart) { ImagePart newPart = footerPart.AddImagePart(ImagePartType.Png); ImageData shape = sourceRun.Descendants().FirstOrDefault(); […]

在C#中解析MS Word生成的XML文件

所以我有一个客户端(这可能只来自政府),他们有一堆他们想要输入数据库的MS Word文档,而且没有人工输入,我觉得将它们转换为XML并使用实用程序解析它们会是最好的行动方案。 我有一个实用程序,使用stackoverflow上的代码执行此操作: Microsoft.Office.Interop.Word.Application word = new Microsoft.Office.Interop.Word.Application(); object oMissing = System.Reflection.Missing.Value; DirectoryInfo dirInfo = new DirectoryInfo(Server.MapPath(“\\testfiles”)); FileInfo[] wordFiles = dirInfo.GetFiles(“*.doc”); word.Visible = false; word.ScreenUpdating = false; XmlDocument xmlDoc = new XmlDocument(); foreach(FileInfo wordFile in wordFiles) { Object filename = (Object)wordFile.FullName; Document doc = word.Documents.Open(ref filename, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref […]

保存Word文档

我想根据Word安装版本保存Word文档; 如果是Word 2003(适当的版本号是11),带有DOC扩展名。 如果Word版本高于2003,则使用DOCX扩展。 差异反映在发送到SaveAS方法的第二个参数中: object fileFormat = GraphDocsSettings.Default.WordInstalledVersion > 11.0? WdSaveFormat.wdFormatXMLDocument : WdSaveFormat.wdFormatDocument; wordDoc.SaveAs(ref outputFile, fileFormat, 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, ref missing); 但是,当使用Interop.Word 11.0时,我收到以下错误: Microsoft.Office.Interop.Word.WDSaveFormat does not contain a definition for wdFormatXMLDocument. […]

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 […]

OpenXML替换word文档的特定customxml部分

我正在使用OpenXML SDK ver 2来操作一些word文档。 文档目前有自定义的xml部分,我想要做的是具体替换部件的xml。 我知道我可以做这样的事情来访问文档的customxml部分: Dim mainStream As New MemoryStream() Dim buffer As Byte() = File.ReadAllBytes(Server.MapPath(“myfile.docx”)) mainStream.Write(buffer, 0, buffer.Length) Try Using mainDocument As WordprocessingDocument = WordprocessingDocument.Open(mainStream, True) MainDocumentPart mainPart = mainDocument.MainDocumentPart; ‘collection of custom xml parts Dim parts = mainPart.CustomXmlParts For Each part As CustomXmlPart In parts ‘how do I replace the xml here?? […]

Word命令行参数空间问题

我想通过使用Environment.GetCommandLineArgs()将参数传递给winword,以便在我的vsto插件中读取它。 如果参数值包含空格我无法转义字符串。 这是有效的: winword.exe /myVar1:C:\folder\whatever1.doc /myVar2:C:\folder\somethingelese.txt C:\example.doc 这不起作用: winword.exe /myVar1:”C:\folder with space\whatever1.doc” /myVar2:”C:\folder with space 2\somethingelese.txt” C:\example.doc

如何查看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#迭代和计算Word文档中的修订?

我一直在寻找这个,但无法在任何地方找到答案,所以希望有人在这里可以提供帮助。 我在C#中使用WinForms应用程序,我使用WordApplcation.CompareDocuments来比较两个文档,并获得一个结果文档,其中的更改标记为Revisions。 这很好用,除了修改隐藏文本框内的东西(我还不关心),我得到了我想要的东西。 所以下一步是计算修改了多少单词 – 特别是wdRevisionDelete和wdRevisonInsert。 唯一的问题是final.Revisions有时是空的或包含大量数据(超过500字)。 我在MSDN页面上阅读了Revisions.Count那个文件。修订版不会显示所有修订版本,只会显示主要故事并且我必须使用范围 – 但这没有帮助。 这是我目前的代码: using Word = Microsoft.Office.Interop.Word; 和 foreach (Word.Section s in final.Sections) { foreach (Word.Revision r in s.Range.Revisions) { counter += r.Range.Words.Count; if (r.Type == Word.WdRevisionType.wdRevisionDelete) delcnt += r.Range.Words.Count; if (r.Type == Word.WdRevisionType.wdRevisionInsert) inscnt += r.Range.Words.Count; } } final是WordApplication.CompareDocuments创建的Word文档 所以,正如我所说,根据MSDN,我使用range.Revision而不是document.Revision,并逐段进行。 只有一个包含六个修订版的文档显示没有,而其他文档显示100个。 所以我的问题是,如何使用修订来计算添加/删除的单词。 我打开了CompareDocuments在Word 2007中创建的文档,并且修订版本已正确标记,可以在Word中接受或拒绝 我可能会忽略的任何想法? 编辑:我注意到一些奇怪的事情 […]

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); […]

一些象形文字语言中的字计数器?

是否有任何可用于某些象形文字语言计数的库(例如:中文,日文,韩文……)? 我发现MS Word可以有效地计算这些语言的文本。 我可以在.NET应用程序中添加对MS Word库的引用来实现此function吗? 或者还有其他解决方案可以达到这个目的吗?