当前位置:网站首页 / C#开发 / 正文

AY xceed docx DEMO 自己笔记1 - 书签和文档

时间:2019年09月23日 | 作者 : aaronyang | 分类 : C#开发 | 浏览: 370次 | 评论 0

准备工作,引用AyWordAndPdf

我是基于xceed开源的docx 二次封装的

image.png

Demo 1 书签方式

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;

namespace testword
{
    class Program
    {

        static WordDemo wd = new WordDemo();
        static void Main(string[] args)
        {
            Console.Title = "AY测试word操作";
            Console.WriteLine("测试word");

            wd.Demo1();



            Console.ReadLine();
        }
    }


    public class WordDemo
    {
        private string demoroot = Directory.GetCurrentDirectory() + @"\testresource\";
        private string demooutputroot = Directory.GetCurrentDirectory() + @"\testresourceoutput\";
        /// <summary>
        /// 书签- 替换文本
        /// </summary>
        public void Demo1()
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn");

        }


    }



}

image.png

然后输入名字,点击添加

image.png

代码1:

public class WordDemo
    {
        private string demoroot = Directory.GetCurrentDirectory() + @"\testresource\";
        private string demooutputroot = Directory.GetCurrentDirectory() + @"\testresourceoutput\";
        public WordDemo()
        {
            if (!Directory.Exists(demoroot))
            {
                Directory.CreateDirectory(demoroot);
            }
            if (!Directory.Exists(demooutputroot))
            {
                Directory.CreateDirectory(demooutputroot);
            }
        }
        /// <summary>
        /// 书签- 替换文本
        /// </summary>
        public void Demo1()
        {
            Thread.CurrentThread.CurrentCulture = new System.Globalization.CultureInfo("zh-cn");
            using (var document = DocX.Load(demoroot + @"bookmark.docx"))
            {
                var regularBookmark = document.Bookmarks["b1"];
                if (regularBookmark != null)
                {
                    regularBookmark.SetText("AY");
                }
                document.SaveAs(demooutputroot + "bookmark_output.docx");

            }
        }


    }

image.png

效果如下:

image.png



DEMO2 创建一个docx,插入书签

   public void Demo2()
        {
            using (var document = DocX.Create(demooutputroot + @"create_insert_bookmark.docx"))
            {
     
                document.InsertParagraph("测试段落").FontSize(16d).SpacingAfter(40d).Alignment = Alignment.center;

                document.InsertBookmark("b1");

            
                var p = document.InsertParagraph("文档中的书签名:");
                p.Append(document.Bookmarks.First().Name);
                p.Append("就在这行");
                p.SpacingAfter(50d);

                var _bookmarkName = "b2";
                var _displayedBookmarkName = "display_b2";
                var p2 = document.InsertParagraph("这个段落包含一个名叫 \"");
                p2.AppendBookmark(_bookmarkName);
                p2.Append("\"的书签");
                p2.Append(document.Bookmarks.Last().Name);
                p2.Append("\" 书签显示的内容是 \"" + _displayedBookmarkName + "\".");

                p2.InsertAtBookmark(_displayedBookmarkName, _bookmarkName);

                document.Save();
            }
        }

image.png




DEMO3 用文本 替换文本

新建一个testreplace.docx

image.png

代码

            public void Demo3()
        {
            using (var document = DocX.Load(demoroot + @"testreplace.docx"))
            {
                document.ReplaceText("$姓名$", "AY");
                document.ReplaceText("$天数$", "10");
                document.ReplaceText("$时间$", DateTime.Now.ToString("yyyy年MM月dd日"));
                document.SaveAs(demooutputroot + @"testreplace.docx");
            }
        }

效果

image.png

官方正则替换写法

  if( document.FindUniqueByPattern( @"<[\w \=]{4,}>", RegexOptions.IgnoreCase ).Count > 0 )
        {
          document.ReplaceText( "<(.*?)>", DocumentSample.ReplaceFunc, false, RegexOptions.IgnoreCase, new Formatting() { Bold = true, FontColor = System.Drawing.Color.Green } );




DEMO4 用图片替换文本

    public void Demo4()
        {
            using (var document = DocX.Load(demoroot + @"testreplace.docx"))
            {
                var image = document.AddImage(demoroot + @"1.png");
                var picture = image.CreatePicture(64, 64);
                document.ReplaceTextWithObject("$姓名$", picture, false, RegexOptions.IgnoreCase);


                document.SaveAs(demooutputroot + @"testreplace图片.docx");
            }

        }

效果

image.png


用链接替换

        public void Demo4()
        {
            using (var document = DocX.Load(demoroot + @"testreplace.docx"))
            {
                var image = document.AddImage(demoroot + @"1.png");
                var picture = image.CreatePicture(64, 64);
                document.ReplaceTextWithObject("$姓名$", picture, false, RegexOptions.IgnoreCase);

                var hyperlink = document.AddHyperlink("AY官网", new Uri("http://www.ayjs.net"));
                document.ReplaceTextWithObject("$时间$", hyperlink);
                document.SaveAs(demooutputroot + @"testreplace连接.docx");
            }

        }

image.png

用表格替换

       public void Demo4()
        {
            using (var document = DocX.Load(demoroot + @"testreplace.docx"))
            {
                var image = document.AddImage(demoroot + @"1.png");
                var picture = image.CreatePicture(64, 64);
                document.ReplaceTextWithObject("$姓名$", picture, false, RegexOptions.IgnoreCase);

                var hyperlink = document.AddHyperlink("AY官网", new Uri("http://www.ayjs.net"));
                document.ReplaceTextWithObject("$天数$", hyperlink);



                var t = document.AddTable(1, 2);
                t.Design = TableDesign.DarkListAccent4;
                t.AutoFit = AutoFit.Window;
                t.Rows[0].Cells[0].Paragraphs[0].Append("ayjs.net");
                t.Rows[0].Cells[1].Paragraphs[0].Append("@copyright 2019");
                document.ReplaceTextWithObject("$时间$", t);

                document.SaveAs(demooutputroot + @"testreplace表格.docx");

            }

        }

image.png


DEMO5 拓展自定义属性

  public void Demo5()
        {
            using (var document = DocX.Create(demooutputroot + @"cusprop.docx"))
            {
                document.AddCustomProperty(new CustomProperty("CompanyName", "测试公司"));
                document.AddCustomProperty(new CustomProperty("Product", "测试产品"));
                document.AddCustomProperty(new CustomProperty("Date", DateTime.Now));
                var p = document.InsertParagraph("文本包含了").Append(document.CustomProperties.Count.ToString()).Append(" 个自定义属性");
                p.SpacingAfter(30);
                foreach (var prop in document.CustomProperties)
                {
                    document.InsertParagraph(prop.Value.Name).Append(" = ").Append(prop.Value.Value.ToString()).AppendLine();
                }
                document.Save();
           
            }
        }

image.png


DEMO6 读取一个模板word到文件,然后再处理

  public void Demo6()
        {
            using (var document = DocX.Create(demooutputroot + @"模板应用后.docx"))
            {
                document.ApplyTemplate(demoroot + @"bookmark.docx");

                document.InsertParagraph("AY有自己的想法").FontSize(15d).UnderlineStyle(UnderlineStyle.singleLine).SpacingBefore(50d);
                document.Save();
            }
        }

image.png


DEMO7 追加一个Document

    public void Demo7()
        {
            using (var document1 = DocX.Load(demoroot + @"testreplace.docx"))
            {
                using (var document2 = DocX.Load(demoroot + @"bookmark.docx"))
                {

                    document1.InsertParagraph(0, "下面内容是追加的文档", false).FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;

                    document1.InsertDocument(document2, true);

                    document1.SaveAs(demooutputroot + @"追加一个文档.docx");
                }
            }
        }

image.png

用文件名读取文件前面介绍过了

接下来,通过Stream方式加载

  public void Demo8()
        {
            using (var fs = new FileStream(demoroot + @"testreplace.docx", FileMode.Open, FileAccess.Read, FileShare.Read))
            {
                using (var doc = DocX.Load(fs))
                {
                    doc.InsertParagraph(0, "流方式加载", false).FontSize(15d).SpacingAfter(50d).Alignment = Alignment.center;
                    var p = doc.InsertParagraph();
                    p.Append("追加一个段落");

                    doc.SaveAs(demooutputroot + @"流方式saveas.docx");
                }
            }
        }

image.png

接下来通过uri加载

   using( var doc = DocX.Load( "https://calibre-ebook.com/downloads/demos/demo.docx" ) )
      {
     
XXXX一样处理

      }





 AYUI       www.ayjs.net      AY         杨洋原创编写,请不要转载谢谢

























推荐您阅读更多有关于“word导出,”的文章

猜你喜欢

额 本文暂时没人评论 来添加一个吧

发表评论

必填

选填

选填

必填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

  查看权限

抖音号:wpfui,可以看到我的很多作品效果

AYUI8社区版Github地址:前往获取

作者:杨洋(AaronYang简称AY,安徽六安人)目前是个人,还没公司AY唯一QQ:875556003和AY交流

高中学历,2015年1月17日开始,兴趣学习研究WPF,目前工作繁忙,不接任何活

声明:AYUI7个人与商用免费,源码可购买。部分DEMO不免费.AY主要靠卖技术服务挣钱

不是从我处购买的ayui7源码,我不提供任何技术服务,如果你举报从哪里买的,我可以帮你转正为我的客户,并送demo

查看捐赠

AYUI7.X MVC教程 更新如下:

第一课 第二课 程序加密教程

兼容XP到win10,vs2015/2017/2019,最新AYUI:7.6.5.5

vs2015 企业版密钥HM6NR-QXX7C-DFW2Y-8B82K-WTYJV

vs2017 企业版密钥NJVYC-BMHX2-G77MM-4XJMR-6Q8QF

标签列表