• 用 DocumentFormat.OpenXml 和Microsoft.Office.Interop.Word 写入或者读取word文件


    using System;
    using System.Collections.Generic;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Xml;
    
    namespace MediaTools.Tool
    {
        public class WordHelper
        {       
            public static void TxtToword(string docPath, string txtPath)
            {
                var txtContent = File.ReadAllText(txtPath, Encoding.UTF8);
                WriteToWord(docPath, txtContent);
            }
            public static void WriteToWord(string docPath, string content)
            {
                if (!File.Exists(docPath)) CreateWordprocessingDocument(docPath);
                Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
                Microsoft.Office.Interop.Word.Document doc = app.Documents.Open(docPath);
                object missing = System.Reflection.Missing.Value;
                doc.Content.Text = content;
                app.Visible = false;
                doc.Save();
                doc.Close();
            }
    
            private static void CreateWordprocessingDocument(string filepath)
            {
                // Create a document by supplying the filepath. 
                using (WordprocessingDocument wordDocument =
                    WordprocessingDocument.Create(filepath, WordprocessingDocumentType.Document))
                {
                    // Add a main document part. 
                    MainDocumentPart mainPart = wordDocument.AddMainDocumentPart();
    
                    // Create the document structure and add some text.
                    mainPart.Document = new DocumentFormat.OpenXml.Wordprocessing.Document();
                    Body body = mainPart.Document.AppendChild(new Body());
                    DocumentFormat.OpenXml.Drawing.Paragraph para = body.AppendChild(new DocumentFormat.OpenXml.Drawing.Paragraph());
                    Run run = para.AppendChild(new Run());
                    run.AppendChild(new Text(""));
                }
            }
    
            public static string GetContentFromWord(string docPath)
            {
                const string wordmlNamespace = "http://schemas.openxmlformats.org/wordprocessingml/2006/main";
    
                StringBuilder textBuilder = new StringBuilder();
                using (WordprocessingDocument wdDoc = WordprocessingDocument.Open(docPath, false))
                {  
                    NameTable nt = new NameTable();
                    XmlNamespaceManager nsManager = new XmlNamespaceManager(nt);
                    nsManager.AddNamespace("w", wordmlNamespace);
                    XmlDocument xdoc = new XmlDocument(nt);
                    xdoc.Load(wdDoc.MainDocumentPart.GetStream());
    
                    XmlNodeList paragraphNodes = xdoc.SelectNodes("//w:p", nsManager);
    
                    foreach (XmlNode paragraphNode in paragraphNodes)
                    {
                        //XmlNodeList textNodes = paragraphNode.SelectNodes(".//['w: t'&'w:tab']", nsManager);
                        XmlNodeList textNodes = paragraphNode.SelectNodes(".//w:t", nsManager);
    
                        foreach (System.Xml.XmlNode textNode in textNodes)
                        {
                            textBuilder.Append(textNode.InnerText);
                        }
                        textBuilder.Append(Environment.NewLine);
                    }
                }
                var result = textBuilder.ToString();
                return result;
            }
        }
    }
  • 相关阅读:
    部署NetCore项目(本文介绍用用IIS部署)
    vs中添加MySql实体集流程
    一文搞定HashMap的实现原理
    二分查找
    hashcode返回值可能为负数
    哈希碰撞与生日攻击
    并发的第二天
    java并发编程-1
    排序的第一天
    并发的第一天
  • 原文地址:https://www.cnblogs.com/dayang12525/p/10268244.html
Copyright © 2020-2023  润新知