首页 > 代码库 > Spire.Doc测评

Spire.Doc测评

网上的office类库很多比较流行的有openxmlsdk,npoi,epplus,aspose等等..

e-iceblue公司出品的office通用类库虽然并不是很有名气但是公司也很强大。前2天受朋友邀请这里为e-iceblue公司的word类库做一个简单的测评 我直挑我认为非常有用的说

功能一:向word中段落后插入数据
 //Create word document
            Document document = new Document();

            //Create a new secition
            Section section = document.AddSection();

            //Create a new paragraph
            Paragraph paragraph = section.AddParagraph();

            //Append Text
            paragraph.AppendText("Hello World!\r");
            paragraph.AppendText("Hello World!");

spire.doc 提供了 appentText 方法插入数据,当然要换行的话用换行符\r就OK的。简单的hello,world例子入门非常不错。

功能二:替换文本中的某段字符串为另一个字符串
//Create word document
            Document document = new Document();

            //load a document
            document.LoadFromFile(@"..\..\..\..\..\..\Data\FindAndReplace.doc");

            //Replace text
            document.Replace(this.textBox1.Text, this.textBox2.Text,true,true);

            //Save doc file.
            document.SaveToFile("Sample.doc", FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");

这样就把textbox1.text比如是word,textbox2.text比如是hello,就可以讲所有的word这个字符串全部替换成hello,这里包括段落等操作元素同样有replace方法非常给力。

功能三:操作range属性
 //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            //Get the first secition
            Section section = document.Sections[0];
         
            //Create a new paragraph or get the first paragraph
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();

            //Append Text
            String text
                = "This paragraph is demo of text font and color. "
                + "The font name of this paragraph is Tahoma. "
                + "The font size of this paragraph is 20. "
                + "The under line style of this paragraph is DotDot. "
                + "The color of this paragraph is Blue. ";
            TextRange txtRange = paragraph.AppendText(text);

            //Font name
            txtRange.CharacterFormat.FontName = "Tahoma";

            //Font size
            txtRange.CharacterFormat.FontSize = 20;

            //Underline
            txtRange.CharacterFormat.UnderlineStyle = UnderlineStyle.DotDot;

            //Change text color
            txtRange.CharacterFormat.TextColor = Color.Blue;

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");
txtRange.CharacterFormat可以给区域提供各种各样的属性。非常方便。我们可以通过这个属性随心所欲的设置客户喜欢的样式。

功能四:提供了很多内定的美丽的样式
//Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            //Get the first secition
            Section section = document.Sections[0];

            //Create a new paragraph or get the first paragraph
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();

            //Append Text
            paragraph.AppendText("Builtin Style:");

            foreach (BuiltinStyle builtinStyle in Enum.GetValues(typeof(BuiltinStyle)))
            {
                paragraph = section.AddParagraph();
                //Append Text
                paragraph.AppendText(builtinStyle.ToString());
                //Apply Style
                paragraph.ApplyStyle(builtinStyle);
            }

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


BuiltinStyle是个枚举内部有很多样式。通过直接设置这些枚举的样式就能把段落搞的很漂亮。

功能五:设置段落对齐
         
 private void button1_Click(object sender, EventArgs e)
        {
            //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            //Get the first secition
            Section section = document.Sections[0];

            //Create a new paragraph or get the first paragraph
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();

            //Append Text
            paragraph.AppendText("The various ways to format paragraph text in Microsoft Word:");

            paragraph.ApplyStyle(BuiltinStyle.Heading1);

            //Append alignment text
            AppendAligmentText(section);

            //Append indentation text
            AppendIndentationText(section);

            AppendBulletedList(section);

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


        }

        private void AppendAligmentText(Section section)
        {
            Paragraph paragraph = null;

            paragraph = section.AddParagraph();

            //Append Text
            paragraph.AppendText("Horizontal Aligenment");

            paragraph.ApplyStyle(BuiltinStyle.Heading3);

            foreach (Spire.Doc.Documents.HorizontalAlignment align in Enum.GetValues(typeof(Spire.Doc.Documents.HorizontalAlignment)))
            {
                Paragraph paramgraph = section.AddParagraph();
                paramgraph.AppendText("This text is " + align.ToString());
                paramgraph.Format.HorizontalAlignment = align;
            }
        }

        private void AppendIndentationText(Section section)
        {
            Paragraph paragraph = null;

            paragraph = section.AddParagraph();

            //Append Text
            paragraph.AppendText("Indentation");

            paragraph.ApplyStyle(BuiltinStyle.Heading3);

            paragraph = section.AddParagraph();
            paragraph.AppendText("Indentation is the spacing between text and margins. Word allows you to set left and right margins, as well as indentations for the first line of a paragraph and hanging indents");
            paragraph.Format.FirstLineIndent = 15;
        }

        private void AppendBulletedList(Section section)
        {
            Paragraph paragraph = null;

            paragraph = section.AddParagraph();
            

            //Append Text
            paragraph.AppendText("Bulleted List");

            paragraph.ApplyStyle(BuiltinStyle.Heading3);

            paragraph = section.AddParagraph();
            for (int i = 0; i < 5; i++)
            {
                paragraph = section.AddParagraph();
                paragraph.AppendText("Item" + i.ToString());

                if (i == 0)
                {
                    paragraph.ListFormat.ApplyBulletStyle();
                }
                else
                {
                    paragraph.ListFormat.ContinueListNumbering();
                }

                paragraph.ListFormat.ListLevelNumber = 1;
            }
        }
跟word里的对齐按钮功能一致。
功能6:设置书签
 private void button1_Click(object sender, EventArgs e)
        {
            //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            Bookmark(document.Sections[0]);

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


        }

        private void Bookmark(Section section)
        {
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
            paragraph.AppendText("The sample demonstrates how to using bookmark.");
            paragraph.ApplyStyle(BuiltinStyle.Heading2);

            section.AddParagraph();
            paragraph = section.AddParagraph();
            paragraph.AppendText("Simple bookmark.");
            paragraph.ApplyStyle(BuiltinStyle.Heading4);
            
            // Writing simple bookmarks
            section.AddParagraph();
            paragraph = section.AddParagraph();
            paragraph.AppendBookmarkStart("SimpleBookMark");
            paragraph.AppendText("This is a simple book mark.");
            paragraph.AppendBookmarkEnd("SimpleBookMark");

            section.AddParagraph();
            paragraph = section.AddParagraph();
            paragraph.AppendText("Nested bookmark.");
            paragraph.ApplyStyle(BuiltinStyle.Heading4);

            // Writing nested bookmarks
            section.AddParagraph();
            paragraph = section.AddParagraph();
            paragraph.AppendBookmarkStart("Root");
            paragraph.AppendText(" Root data ");
            paragraph.AppendBookmarkStart("NestedLevel1");
            paragraph.AppendText(" Nested Level1 ");
            paragraph.AppendBookmarkStart("NestedLevel2");
            paragraph.AppendText(" Nested Level2 ");
            paragraph.AppendBookmarkEnd("NestedLevel2");
            paragraph.AppendText(" Data Level1 ");
            paragraph.AppendBookmarkEnd("NestedLevel1");
            paragraph.AppendText(" Data Root ");
            paragraph.AppendBookmarkEnd("Root");

        }
功能七:插入图片
 private void button1_Click(object sender, EventArgs e)
        {
            //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            InsertImage(document.Sections[0]);

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


        }

        private void InsertImage(Section section)
        {
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
            paragraph.AppendText("The sample demonstrates how to insert a image into a document.");
            paragraph.ApplyStyle(BuiltinStyle.Heading2);

            paragraph = section.AddParagraph();
            paragraph.Format.HorizontalAlignment = Spire.Doc.Documents.HorizontalAlignment.Left;
            paragraph.AppendPicture(Image.Properties.Resources.Word);
        }

可以在段落中插入图片并且设置其对齐方式。
功能八:插入表格
 private void button1_Click(object sender, EventArgs e)
        {
            //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            addTable(document.Sections[0]);

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


        }

        private void addTable(Section section)
        {
            String[] header = { "Name", "Capital", "Continent", "Area", "Population" };
            String[][] data =
                http://www.mamicode.com/{>
功能九:水印效果
 private void button1_Click(object sender, EventArgs e)
        {
            //Open a blank word document as template
            Document document = new Document(@"..\..\..\..\..\..\Data\Blank.doc");

            InsertWatermark(document.Sections[0]);

            //Save doc file.
            document.SaveToFile("Sample.doc",FileFormat.Doc);

            //Launching the MS Word file.
            WordDocViewer("Sample.doc");


        }

        private void InsertWatermark(Section section)
        {
            Paragraph paragraph
                = section.Paragraphs.Count > 0 ? section.Paragraphs[0] : section.AddParagraph();
            paragraph.AppendText("The sample demonstrates how to insert a watermark into a document.");
            paragraph.ApplyStyle(BuiltinStyle.Heading2);


            TextWatermark txtWatermark = new TextWatermark();
            txtWatermark.Text = "Watermark Demo";
            txtWatermark.FontSize = 90;
            txtWatermark.Layout = WatermarkLayout.Diagonal;
            section.Document.Watermark = txtWatermark;
         
        }


功能十:转换为其他的格式包括xml,html,image,pdf...参见demo.
此类库还有其他的非常强大的功能。具体可去官网下载demo..确实是一个非常实用的类库。



Spire.Doc测评