zoukankan      html  css  js  c++  java
  • 在C#中使用Spire.doc对word的操作总结

                         C#中使用Spire.docword的操作总结

      

    在最近的工程中我们要处理一些word文档。通过在网上的大量搜索,我发现大多数软件功能不是不完整就是有重复。极少数可以完全实现的word组件又要收费。功夫不负有心人,终于找到了可以满足我们需要的免费的C# word程序库。为了和其他的作比较,我在这里先做以下汇总。希望对大家有帮助。

    如何得到?

     

    这个免费版的word 组件可以在Codeplex下载到,你也可以从本文里直接下载msi文件。它还提供了一些源代码。

    Word操作汇总

    1、         打开已有word文件,这是要处理word文件的最基本也是必须的步骤。他提供了三种方法。

    方法1:从已知特定的文档中初始化一个新的Document 类的实

    Document document = new Document(@"....Sample.docx"); 


    方法2、从文件中加载一个word文件

    Document document = new Document();
    document.LoadFromFile(@"....Sample.docx");

    方法3、从流文件中加载word文件

    Stream stream = File.OpenRead(@"....Sample.docx");
    Document document = new Document(stream);

    2、如何创建表格

    Document document = new Document();
    Section section = document.AddSection();
     
    Table table = section.AddTable(true);
    table.ResetCells(23);
     
    TableRow row = table.Rows[0];
    row.IsHeader = true;
     
    Paragraph para = row.Cells[0].AddParagraph();
    TextRange TR = para.AppendText("Item");
     
    para = row.Cells[1].AddParagraph();
    TR = para.AppendText("Description");
     
    para = row.Cells[2].AddParagraph();
    TR = para.AppendText("Qty");
     
    document.SaveToFile("WordTable.docx");
     
    System.Diagnostics.Process.Start("WordTable.docx");

     

    我们还可以设置行高和列宽

    3、如何插入超链接?你可以插入两种超链接,Email 链接和webmail 链接。   

    Documentdocument =newDocument();
    Section section = document.AddSection();
     
    //Insert URL hyperlink
    Paragraph paragraph = section.AddParagraph();
    paragraph.AppendText("Home page");
    paragraph.ApplyStyle(BuiltinStyle.Heading2);
    paragraph = section.AddParagraph();
    paragraph.AppendHyperlink("www.e-iceblue.com""www.e-iceblue.com",HyperlinkType.WebLink);
     
    //Insert email address hyperlink
    paragraph = section.AddParagraph();
    paragraph.AppendText("Contact US");
    paragraph.ApplyStyle(BuiltinStyle.Heading2);
    paragraph = section.AddParagraph();
    paragraph.AppendHyperlink("mailto:support@e-iceblue.com""support@e-iceblue.com",HyperlinkType.EMailLink);
     
    document.SaveToFile("Hyperlink.docx");
    System.Diagnostics.Process.Start("Hyperlink.docx");

     


    4、如何加入注解

    Document document = new Document();
    Section section = document.AddSection();
     
    Paragraph paragraph = section.AddParagraph();
    paragraph.AppendText("Home Page of ");
    TextRange textRange = paragraph.AppendText("e-iceblue");
     
    Comment comment1 = paragraph.AppendComment("www.e-iceblue.com");
    comment1.AddItem(textRange);
    comment1.Format.Author = "Harry Hu";
    comment1.Format.Initial = "HH";
     
    document.SaveToFile("Comment.docx");
    System.Diagnostics.Process.Start("Comment.docx");

     

    5、如何加入书签

    Document document = new Document();
    Section section = document.AddSection();
     
    Paragraph paragraph = section.AddParagraph();
     
    paragraph.AppendBookmarkStart("SimpleBookMark");
    paragraph.AppendText("This is a simple book mark.");
    paragraph.AppendBookmarkEnd("SimpleBookMark");
     
    document.SaveToFile("Bookmark.docx");
    System.Diagnostics.Process.Start("Bookmark.docx");

     

    6、合并邮件

    Document document = new Document();
    document.LoadFromFile("Fax.doc");
     
    string[] filedNames = new string[] { "Contact Name""Fax""Date" };
     
    string[] filedValues = new string[] { "John Smith""+1 (69) 123456", System.DateTime.Now.Date.ToString() };
     
    document.MailMerge.Execute(filedNames, filedValues);
     
    document.SaveToFile("MailMerge.doc", FileFormat.Doc);
    System.Diagnostics.Process.Start("MailMerge.doc");
     

    7、加入表单,这部分包含创建以及填入表单域。

    创建表单

    //Add new section to document
    Section section = document.AddSection();
     
    //Add Form to section
    private void AddForm(Section section)
     
    //add text input field
    TextFormField field
    = fieldParagraph.AppendField(fieldId, FieldType.FieldFormTextInput) as TextFormField;
     
    //add dropdown field
    DropDownFormField list
    = fieldParagraph.AppendField(fieldId, FieldType.FieldFormDropDown) as DropDownFormField;
     
    //add checkbox field
    fieldParagraph.AppendField(fieldId, FieldType.FieldFormCheckBox);

    填入表单域

    //Fill data from XML file
    using (Stream stream = File.OpenRead(@"......DataUser.xml"))
    {
        XPathDocument xpathDoc = new XPathDocument(stream);
    XPathNavigator user = xpathDoc.CreateNavigator().SelectSingleNode("/user");
     
    Fill data:
     
    foreach (FormField field in document.Sections[0].Body.FormFields)
      {
         String path = String.Format("{0}/text()", field.Name);
         XPathNavigator propertyNode = user.SelectSingleNode(path);
         if (propertyNode != null)
         {
             switch (field.Type)
             {
                 case FieldType.FieldFormTextInput:
                      field.Text = propertyNode.Value;
                      break;
     
                 case FieldType.FieldFormDropDown:
                      DropDownFormField combox = field as DropDownFormField;
                      for(int i = 0; i < combox.DropDownItems.Count; i++)
                      {
                          if (combox.DropDownItems[i].Text == propertyNode.Value)
                          {
                             combox.DropDownSelectedIndex = i;
                             break;
                          }
                          if (field.Name == "country" && combox.DropDownItems[i].Text =="Others")
                          {
                             combox.DropDownSelectedIndex = i;
                          }
                      }
                      break;
     
                 case FieldType.FieldFormCheckBox:
                      if (Convert.ToBoolean(propertyNode.Value))
                      {
                          CheckBoxFormField checkBox = field as CheckBoxFormField;
                          checkBox.Checked = true;
                      }
                      break;
                }
           }
       }
     }
     

    8、合并word文档

    //Load two documents
    //Load Document1 and Document2
    Document DocOne = new Document();
    DocOne.LoadFromFile(@"E:WorkDocumentwelcome.docx", FileFormat.Docx);
    Document DocTwo = new Document();
    DocTwo.LoadFromFile(@"E:WorkDocumentNew Zealand.docx", FileFormat.Docx);
     
    //Merge
    foreach (Section sec in DocTwo.Sections)
    {
     DocOne.Sections.Add(sec.Clone());
    }
    //Save and Launch
    DocOne.SaveToFile("Merge.docx", FileFormat.Docx);

    9、保护文档。你可以设置密码或者加入水印来进行保护。文字和图片的水印都支持。


    //Protect with password
    document.Encrypt("eiceblue");
     
    //Add Text watermark:
    TextWatermark txtWatermark = new TextWatermark();
    txtWatermark.Text = "Microsoft";
    txtWatermark.FontSize = 90;
    txtWatermark.Layout = WatermarkLayout.Diagonal;
    document.Watermark = txtWatermark;
     
    //Add Image watermark:
    PictureWatermark picture = new PictureWatermark();
    picture.Picture = System.Drawing.Image.FromFile(@"..imagess.jpeg");
    picture.Scaling = 250;
    document.Watermark = picture;

    10、转换功能是在处理word文档时最常见的操作了。使用免费版的Spire.doc  for .NET 转换变得很简单。只要包含三行类似的代码你就可以把word转换成其他常用格式,像PDF,HTML和图片。

    Word转换成PDF

    SaveToFile("Target PDF.PDF", FileFormat.PDF);

     

    Word转换成图片

     

    Image image = document.SaveToImages(0, ImageType.Bitmap);
    image.Save("Sample.tiff", ImageFormat.Tiff);

     

    Word转换成HTML

     

    document.SaveToFile("Target HTML.html", FileFormat.Html);
    WordDocViewer(""Target HTML.html");

    结论:

    这是一个免费又强大的C# word 组件,它不需要 Word automatio即可运行,并且任何第三方的功能都囊括。

     


  • 相关阅读:
    css 超出两行省略号,超出一行省略号
    css 去掉i标签默认斜体样式
    Spring 使用单选按钮
    Spring Maven工程引入css,js
    Sping 补充完成修改功能
    Spring 控制器层如何启用验证?
    Spring 控制器层如何调用DAO层
    spring boot工程如何启用 热启动功能
    Spring 视图层如何显示验证消息提示
    Sping POJO中如何添加验证规则和验证消息提示
  • 原文地址:https://www.cnblogs.com/Yesi/p/4280949.html
Copyright © 2011-2022 走看看