none
HTML字符串,转化为Word文档 RRS feed

  • 问题

  • 使用“Microsoft.Office.Interop.Word”将“HTML字符串”,转化为“Word文档”,方法如下:

    public void CreateWordFile()
      {
      object oMissing = System.Reflection.Missing.Value;
      Microsoft.Office.Interop.Word._Application oWrod = new Microsoft.Office.Interop.Word.Applicatio();
      oWrod.Visible = true;
      Microsoft.Office.Interop.Word._Document oDoc = oWrod.Documents.Add(ref oMissing, ref oMissing, ref oMissing, ref oMissing);

      //Add new table
      object start = 0;
      object end = 0;
      Microsoft.Office.Interop.Word.Range tableLocation = oDoc.Range(ref start, ref end);
      oDoc.Tables.Add(tableLocation, 1, 1, ref oMissing, ref oMissing);
      oDoc.Tables[1].Cell(1, 1).Range.Text = content;
       
    问题:
    “content”是HTML字符串,现在可以将字符串“直接输出到Word”。但是输出的文本内容并“没有按照HTML中标签定义的格式显示”,而是直接把这些HTML标签也输出了。

    现在的问题是:如何才能使输出的Word中的文本内容“按照HTML字符串中的标签定义的格式”显示,而不是直接把标签输出出来。怎么办呢???
    //oDoc.Tables[1].Cell(2, 2).Range.Text = "新闻字符串";
      }
    有精到广,做出自己的特色。
    2011年12月13日 5:45

答案

  • (下载OpenXMLSDKv2.msi来安装)
     
    安后将 DocumentFormat.OpenXml.dll、WindowsBase.dll 加入参考
    DocumentFormat.OpenXml.dll 位置在 C:\Program Files\Open XML SDK\V2.0\lib\DocumentFormat.OpenXml.dll
    玩了一下
    是可以的
    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)//Get Method
            {
    
    
                this.generateWordDocument();
            }
        }
    
        public void generateWordDocument()
        {
             
                //开启现有的Word档
                using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(Server.MapPath("~/test.docx"), true))
                {
                    MainDocumentPart mainPart = wordDoc.MainDocumentPart;
                    int altChunkIdCounter = 1;
                    int blockLevelCounter = 1;
    
                    string htmlMarkup = "<h1>" + "Hello World!!测试" + "</h1>";
     
                        htmlMarkup += "<span style='color:red'>" + "test" + "</span>";
                     
                    string mainhtml = "<html><head><style type='text/css'>.catalogGeneralTable{border-collapse: collapse;text-align: left;} .catalogGeneralTable td, th{ padding: 5px; border: 1px solid #999999; }</style></head><body style='font-family:Trebuchet MS;font-size:.9em;'>" + htmlMarkup + "</body></html>";
                    string altChunkId = String.Format("AltChunkId{0}", altChunkIdCounter++);
    
                    //Import data as html content using Altchunk
                    AlternativeFormatImportPart chunk = mainPart.AddAlternativeFormatImportPart(AlternativeFormatImportPartType.Html, altChunkId );
    
                    using (Stream chunkStream = chunk.GetStream(FileMode.Create, FileAccess.Write))
                    {
                        using (StreamWriter stringWriter = new StreamWriter(chunkStream,Encoding.UTF8)) 
                            //Encoding.UTF8 is important to remove special characters
                        {
                            stringWriter.Write(mainhtml);
                        }
                    }
    
                    AltChunk altChunk = new AltChunk();
                    altChunk.Id = altChunkId;
    
                    mainPart.Document.Body.InsertAt(altChunk, blockLevelCounter++);
                    mainPart.Document.Save();
                }
               
    
     
             
        }
    

    执行结果:
    Other Reference:

    Shadowと愉快なコード達


    2011年12月13日 17:54