生成文档的试验代码(Aspose.words)操作文档(转载)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Aspose.Words;
using Aspose.Words.Properties;
using log4net;
using System.IO;
using System.Diagnostics;
using Aspose.Words.Tables;
using Aspose.Words.Drawing;
using Aspose.Words.Lists;
using Aspose.Words.Fields;

namespace Test
{undefined
    public partial class Form1 : Form
    {undefined
        private static readonly ILog log = LogManager.GetLogger(typeof(Form1).Name);

        private String tbmessage = "";

        public Form1()
        {undefined
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {undefined
            Aspose.Words.License license = new Aspose.Words.License();
            license.SetLicense("License.lic");


        }

        /**
         * 这是生成文档的试验代码
         * @parameter sender
         * @parameter e
         */
        private void button1_Click(object sender, EventArgs e)
        {undefined
            tbStatus.Text = "正在创建。。。。。。";
            Document doc = new Document("c://4add.doc");
            DocumentBuilder builder = new DocumentBuilder(doc);
            try
            {undefined
                //写入字符串
                builder.Writeln("Hello World");
                builder.Writeln("{FOR REPLACE}");

                //Form Field
                string[] items = { "One", "Two", "Three" };

                builder.InsertComboBox("DropDown", items, 0);

                //在插入文本前定制文件属性.

                Aspose.Words.Font font = builder.Font;

                font.Size = 24;

                font.Bold = true;

                font.Color = Color.Blue;

                font.Name = "Arial";

                font.Underline = Underline.Dash;

                builder.Write("Sample text.");


                /**
                 * Set paragraph formatting properties
                 * */
                ParagraphFormat paragraphFormat = builder.ParagraphFormat;
                //paragraphFormat.Alignment = ParagraphAlignment.Center;
                //paragraphFormat.LeftIndent = 0;
                //paragraphFormat.RightIndent = 50;
                //paragraphFormat.SpaceAfter = 25;

                // Output text
                builder.Writeln("I'm a very nice formatted paragraph. I'm intended to demonstrate how the left and right indents affect word wrapping.");
                builder.Writeln("I'm another nice formatted paragraph. I'm intended to demonstrate how the space after paragraph looks like.");


               
                //读出属性值
                Console.WriteLine("1. Document name: {0}", "output.doc");

                Console.WriteLine("2. Built-in Properties");
                foreach (DocumentProperty prop in doc.BuiltInDocumentProperties)

                    Console.WriteLine("{0} : {1}", prop.Name, prop.Value);

                Console.WriteLine("3. Custom Properties");

                foreach (DocumentProperty prop in doc.CustomDocumentProperties)

                  Console.WriteLine("{0} : {1}", prop.Name, prop.Value);

                //输出Doc的Style
                StyleCollection styles = doc.Styles;
                foreach (Style style in styles)
                   Console.WriteLine("style name:"+style.Name);

                //增加一个Section
                Section sectionToAdd = new Section(doc);
                doc.Sections.Add(sectionToAdd);

                SectionCollection sections = doc.Sections;
                Console.WriteLine("doc.sections.length=" + sections.Count);

               
                /**
                 * Moving Cursor
                 **/
                //移动到文件头和文件尾
                builder.MoveToDocumentEnd();
                builder.Writeln("This is the end of the document.");

                builder.MoveToDocumentStart();
                builder.Writeln("This is the beginning of the document.");

                //移动到文件的任意节点
                builder.MoveTo(doc.FirstSection.Body.LastParagraph);
                builder.MoveToDocumentEnd();

 

                //移动到Section
                builder.MoveToSection(1);
                builder.Writeln("This is the 3rd section.");

                //移动到Section中的Paragraph
                // Parameters are 0-index. Moves to third paragraph.
                builder.MoveToParagraph(1, 0);
                builder.Writeln("This is the 2rd paragraph.");

 

 

                //移动到页眉和页脚
                // Specify that we want headers and footers different for first, even and odd pages.
                builder.PageSetup.DifferentFirstPageHeaderFooter = true;
                builder.PageSetup.OddAndEvenPagesHeaderFooter = true;

                // Create three pages in the document.
                builder.MoveToSection(0);
                builder.Writeln("Page1");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("Page2");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("Page3");

                // Create the headers.
                builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
                builder.Write("Header First");
                builder.MoveToHeaderFooter(HeaderFooterType.HeaderEven);
                builder.Write("Header Even");
                builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);
                builder.Write("Header Odd");

                //Move to a table cell.
                // All parameters are 0-index. Moves to the 2nd table, 3rd row, 5th cell.
                //builder.MoveToCell(1, 2, 4, 0);
                //builder.Writeln("Hello World!");

 

                //得到当前的Node和Paragraph
                Node curNode = builder.CurrentNode;
                Paragraph curParagraph = builder.CurrentParagraph;

 

                /**
                 * 替换**/

                doc.Range.Replace("{FOR REPLACE}", "IS_PLACED", false, false);

                /** Range**/
                string text = doc.Range.Text;
                string text2 = doc.Sections[0].Range.Text;

                /**
                 * 插入一个文档
                 * */
                //先退到文档开头,插入模板
                builder.MoveToSection(0);
                builder.MoveToDocumentStart();
                //curNode = builder.CurrentNode;
                //curParagraph = builder.CurrentParagraph;
                //插入的一种方式
                Document doctemp = new Document("c://testtemplate.doc");
                //InsertDocument(curParagraph, doctemp);

                //插入的第二种方式
                doc.AppendDocument(doctemp,ImportFormatMode.KeepSourceFormatting);


                //插入一个PAGE 域
                builder.Writeln("Page Number: ");
               //FieldStart pageField = builder.InsertField("PAGE","");
                builder.InsertField("PAGE", "");

            
                doc.UpdatePageLayout();
                doc.UpdateFields();

                //保存成PDF
                //保存成Doc
                builder.Document.Save("c://" + "output.doc");
                tbStatus.Text = "创建成功";


                //计算页码
                builder.MoveToDocumentEnd();
                int secCount = doc.Sections.Count;
                builder.MoveToSection(secCount - 1);


                int pages = doc.PageCount;
                int curPage = doc.BuiltInDocumentProperties.Pages;

                tbMessage.Text = "文件的当前页码数是:" + curPage+"/r/n";
                tbMessage.Text += "文件所有页码数(含封面和目录页)是:"+pages +"/r/n";


              

            }
            catch (Exception ex) {undefined
                tbMessage.Text = "创建失败:" + ex.Message;
            }

 

        }

        private void button1_Click_1(object sender, EventArgs e)
        {undefined
            tbStatus.Text = "打开Word文档";
            try
            {undefined
                Process p = Process.Start("c://output.doc");              
            }
            catch (Exception ex)
            {undefined
                tbMessage.Text = "打开Word文档失败(c://output.doc)!!具体原因是:" + ex.Message;
            }
        }


        /**
         *
         * 创建一个页眉页脚中有表格的应用
         *
         * **/

        private void btnGernerateDoc2_Click(object sender, EventArgs e)
        {undefined
            tbStatus.Text = "正在创建。。。。。。";
            Document doc = new Document();

            DocumentBuilder builder = new DocumentBuilder(doc);


            try
            {undefined


                Section currentSection = builder.CurrentSection;

                PageSetup pageSetup = currentSection.PageSetup;

 

                // Specify if we want headers/footers of the first page to be different from other pages.

                // You can also use PageSetup.OddAndEvenPagesHeaderFooter property to specify

                // different headers/footers for odd and even pages.

                pageSetup.DifferentFirstPageHeaderFooter = true;

 

                // --- Create header for the first page. ---

                pageSetup.HeaderDistance = 20;

                builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);

                builder.ParagraphFormat.Alignment = ParagraphAlignment.Center;

 

                // Set font properties for header text.

                builder.Font.Name = "Arial";

                builder.Font.Bold = true;

                builder.Font.Size = 14;

                // Specify header title for the first page.

                builder.Write("Aspose.Words Header/Footer Creation Primer - Title Page.");

 

                // --- Create header for pages other than first. ---

                pageSetup.HeaderDistance = 20;

                builder.MoveToHeaderFooter(HeaderFooterType.HeaderPrimary);

 

                // Insert absolutely positioned image into the top/left corner of the header.

                // Distance from the top/left edges of the page is set to 10 points.

                string imageFileName = "c://test.png";

                builder.InsertImage(imageFileName, RelativeHorizontalPosition.Page, 10, RelativeVerticalPosition.Page, 10, 50, 50, WrapType.Through);

 

                builder.ParagraphFormat.Alignment = ParagraphAlignment.Right;

                // Specify another header title for other pages.

                builder.Write("Aspose.Words Header/Footer Creation Primer.");

 

                // --- Create footer for pages other than first. ---

                builder.MoveToHeaderFooter(HeaderFooterType.FooterPrimary);

 

                // We use table with two cells to make one part of the text on the line (with page numbering)

                // to be aligned left, and the other part of the text (with copyright) to be aligned right.

                builder.StartTable();

 

                // Calculate table width as total page width with left and right marins subtracted.

                double tableWidth = pageSetup.PageWidth - pageSetup.LeftMargin - pageSetup.RightMargin;

 

                builder.InsertCell();

                // Set first cell to 1/3 of the page width.

                builder.CellFormat.Width = tableWidth / 3;

 

                // Insert page numbering text here.

                // It uses PAGE and NUMPAGES fields to autocalculate current page number and total number of pages.

                builder.Write("Page ");

                builder.InsertField("PAGE", "");

                builder.Write(" of ");

                builder.InsertField("NUMPAGES", "");

 

                // Align this text to the left.

                builder.CurrentParagraph.ParagraphFormat.Alignment = ParagraphAlignment.Left;

 

                builder.InsertCell();

                // Set the second cell to 2/3 of the page width.

                builder.CellFormat.Width = tableWidth * 2 / 3;

 

                builder.Write("(C) 2006 Aspose Pty Ltd. All rights reserved.");

 

                // Align this text to the right.

                builder.CurrentParagraph.ParagraphFormat.Alignment = ParagraphAlignment.Right;

 

                builder.EndRow();

                builder.EndTable();

 

                builder.MoveToDocumentEnd();

                // Make page break to create a second page on which the primary headers/footers will be seen.

                builder.InsertBreak(BreakType.PageBreak);

 

                // Make section break to create a third page with different page orientation.

                builder.InsertBreak(BreakType.SectionBreakNewPage);

 

                // Get the new section and its page setup.

                currentSection = builder.CurrentSection;

                pageSetup = currentSection.PageSetup;

 

                // Set page orientation of the new section to landscape.

                pageSetup.Orientation = Aspose.Words.Orientation.Landscape;

 

                // This section does not need different first page header/footer.

                // We need only one title page in the document and the header/footer for this page

                // has already been defined in the previous section

                pageSetup.DifferentFirstPageHeaderFooter = false;

 

                // This section displays headers/footers from the previous section by default.

                // Call currentSection.HeadersFooters.LinkToPrevious(false) to cancel this.

                // Page width is different for the new section and therefore we need to set

                // a different cell widths for a footer table.

                currentSection.HeadersFooters.LinkToPrevious(false);

 

                // If we want to use the already existing header/footer set for this section

                // but with some minor modifications then it may be expedient to copy heders/footers

                // from the previous section and apply the necessary modifications where we want them.

                CopyHeadersFootersFromPreviousSection(currentSection);

 

                // Find the footer that we want to change.

                HeaderFooter primaryFooter = currentSection.HeadersFooters[HeaderFooterType.FooterPrimary];

 

                // Calculate the table width to fit the current page width.

                tableWidth = pageSetup.PageWidth - pageSetup.LeftMargin - pageSetup.RightMargin;

 

                Row row = primaryFooter.Tables[0].FirstRow;

                row.FirstCell.CellFormat.Width = tableWidth / 3;

                row.LastCell.CellFormat.Width = tableWidth * 2 / 3;

 


                //插入一个PAGE 域
                builder.Writeln("Page Number: ");
                builder.InsertField("PAGE", "");


                doc.UpdatePageLayout();
                doc.UpdateFields();


                // Save the resulting document.

                doc.Save("c://output.doc");
                tbStatus.Text = "创建成功";

            }
            catch (Exception ex)
            {undefined
                tbMessage.Text = "创建失败:" + ex.Message;
            }

           


        }

        /// <summary>

        /// Clones and copies headers/footers form the previous section to the specified section.

        /// </summary>

        private static void CopyHeadersFootersFromPreviousSection(Section section)
        {undefined

            Section previousSection = (Section)section.PreviousSibling;

 

            if (previousSection == null)

                return;

 

            section.HeadersFooters.Clear();

 

            foreach (HeaderFooter headerFooter in previousSection.HeadersFooters)

                section.HeadersFooters.Add(headerFooter.Clone(true));

        }


        /// <summary>

        /// 插入一个文档到另外一个文档
        /// Inserts content of the external document after the specified node.

        /// Section breaks and section formatting of the inserted document are ignored.

        /// </summary>

        /// <param name="insertAfterNode">Node in the destination document after which the content

        /// should be inserted. This node should be a block level node (paragraph or table).</param>

        /// <param name="srcDoc">The document to insert.</param>

        public static void InsertDocument(Node insertAfterNode, Document srcDoc)
        {undefined

            // Make sure that the node is either a pargraph or table.

            if ((!insertAfterNode.NodeType.Equals(NodeType.Paragraph)) &

              (!insertAfterNode.NodeType.Equals(NodeType.Table)))

                throw new ArgumentException("The destination node should be either a paragraph or table.");

 

            // We will be inserting into the parent of the destination paragraph.

            CompositeNode dstStory = insertAfterNode.ParentNode;

 

            // This object will be translating styles and lists during the import.

            NodeImporter importer = new NodeImporter(srcDoc, insertAfterNode.Document, ImportFormatMode.KeepSourceFormatting);

 

            // Loop through all sections in the source document.

            foreach (Section srcSection in srcDoc.Sections)
            {undefined

                // Loop through all block level nodes (paragraphs and tables) in the body of the section.

                foreach (Node srcNode in srcSection.Body)
                {undefined

                    // Let's skip the node if it is a last empty paragarph in a section.

                    if (srcNode.NodeType.Equals(NodeType.Paragraph))
                    {undefined

                        Paragraph para = (Paragraph)srcNode;

                        if (para.IsEndOfSection && !para.HasChildNodes)

                            continue;

                    }

 

                    // This creates a clone of the node, suitable for insertion into the destination document.

                    Node newNode = importer.ImportNode(srcNode, true);

 

                    // Insert new node after the reference node.

                    dstStory.InsertAfter(newNode, insertAfterNode);

                    insertAfterNode = newNode;

                }

            }

        }

        private void btnClose_Click(object sender, EventArgs e)
        {undefined
            System.Environment.Exit(0);
        }


        /// <summary>
        /// 生成表格
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void button1_Click_2(object sender, EventArgs e)
        {undefined
            tbStatus.Text = "正在创建。。。。。。";
           
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            try
            {undefined

 


                for (int i = 0; i < 10; i++)
                {undefined
                    //新建一个标题
                    //builder.ListFormat.ListLevelNumber = 3;
                    //Style listStyle = doc.Styles["sfi"];
                    //List list1 = listStyle.List;
                    //ListLevel level = list1.ListLevels[i];
                    //builder.ParagraphFormat.Style = doc.Styles["Normal"];
                   // builder.ParagraphFormat.Style = doc.Styles["Heading1"];
                    //builder.ListFormat.List = list1;

                    builder.Writeln("这是第" + i + "个表格");
                    //增加一行
                    builder.InsertParagraph();
                    //清空Style
                   
                    builder.ListFormat.List = null;
                   


                    //开始一个表格
                    builder.StartTable();
                    //插入Cell
                    builder.InsertCell();
                    builder.InsertCell();
                    builder.InsertCell();
                    double xx = builder.CellFormat.Width;

                    tbMessage.Text = "表格单元原始长度为:" + xx;
                    //调整长度
                    builder.CellFormat.Width = 300;

                    builder.EndRow();
                    //恢复长度
                    builder.CellFormat.Width = xx;
                    //插入Cell
                    builder.InsertCell();
                    builder.InsertCell();
                    builder.InsertCell();

                    tbMessage.Text = "表格单元原始长度为:" + xx;
                    //调整长度
                    builder.CellFormat.Width = 300;
                    builder.EndRow();
                    //恢复长度
                    builder.CellFormat.Width = xx;


                    //插入Cell
                    builder.InsertCell();
                    builder.InsertCell();
                    builder.InsertCell();

                    tbMessage.Text = "表格单元原始长度为:" + xx;
                    //调整长度
                    builder.CellFormat.Width = 300;
                    builder.EndRow();
                    //恢复长度
                    builder.CellFormat.Width = xx;
          

                    builder.EndTable();
                    //增加一行
                    builder.InsertParagraph();

                }

                String[] aaaa = { "编号","姓名","家庭住址"};
                String[] bbbb = { "张三","朝阳区芍药居","李四","海淀区远大路蓝靛厂东路2号金源时代商务中心写字楼B座11D室"};
              
                /**
                 * 往表里写内容**/

                //表-10个
                for (int t = 0; t < 10; t++ )
                {undefined
                    for(int m=0;m<bbbb.Length;)
                    {undefined
                        m = 0;

                        //行
                        for (int i = 0; i < 3; i++)
                        {undefined
                           
                            //列
                            for (int j = 0; j < 3; j++)
                            {undefined
                                builder.MoveToCell(t, i, j, 0);
                                //第一行表头
                                if (i == 0)
                                {undefined
                                    builder.Font.Bold = true;
                                    builder.Write(aaaa[j]);
                                    builder.Font.Bold = false;
                                }
                                //序号
                                else if (j == 0)
                                {undefined
                                    builder.Write(""+i);
                                }
                                else
                                {undefined
                                    builder.Write(bbbb[m]);
                                    m++;
                                }
                            }
                        }
                    }
                }


                doc.Save("c://output.doc");
                tbStatus.Text = "创建成功";
            }
            catch (Exception ex)
            {undefined
                tbMessage.Text = "创建失败" + ex.StackTrace;
               
            }

        }

        private void btnHeading_Click(object sender, EventArgs e)
        {undefined
            tbStatus.Text = "正在创建。。。。。。";
           
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            try
            {undefined

              

                // There are 9 levels in this list, lets try them all.
                //for (int i = 0; i < 9; i++)
                //{undefined
                    // Create a numbered list based on one of the Microsoft Word list templates and
                    // apply it to the current paragraph in the document builder.
                    builder.ListFormat.List = doc.Lists.Add(ListTemplate.OutlineLegal);
                    builder.ListFormat.ListLevelNumber = 0;
                    builder.Writeln("LevelA " + 0);
                    // This is a way to stop list formatting.
                    builder.ListFormat.List = null;
                    builder.Writeln("列表中的内容 " + 0);

                    //第二个编号
                    builder.ListFormat.List = doc.Lists.Add(ListTemplate.OutlineLegal);
                    builder.ListFormat.ListLevelNumber = 1;
                    builder.Writeln("LevelA " + 1);
                    // This is a way to stop list formatting.
                    builder.ListFormat.List = null;
                    builder.Writeln("列表中的内容 " + 1);

                    //第三个编号
                    builder.ListFormat.List = doc.Lists.Add(ListTemplate.OutlineLegal);
                    builder.ListFormat.ListLevelNumber = 0;
                    builder.Writeln("LevelA " + 0);
                    // This is a way to stop list formatting.
                    builder.ListFormat.List = null;
                    builder.Writeln("列表中的内容 " + 0);

                //}

                doc.Save("c://output.doc");
                tbStatus.Text = "创建成功";
            }
            catch (Exception ex)
            {undefined
                tbStatus.Text = "创建失败" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
            }
        }

        private void btnGernerateHeading_Click(object sender, EventArgs e)
        {undefined

            tbStatus.Text = "正在创建。。。。。。";
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);

            try
            {undefined
                // This truly makes the document empty. No sections (not possible in Microsoft Word).
               // doc.RemoveAllChildren();

                // Create a new section node.
                // Note that the section has not yet been added to the document,
                // but we have to specify the parent document.
                //Section section = new Section(doc);

                Append the section to the document.
                //doc.AppendChild(section);

                Lets set some properties for the section.
                //section.PageSetup.SectionStart = SectionStart.NewPage;
                //section.PageSetup.PaperSize = PaperSize.Letter;


                The section that we created is empty, lets populate it. The section needs at least the Body node.
                //Body body = new Body(doc);
                //section.AppendChild(body);


                // The body needs to have at least one paragraph.
                // Note that the paragraph has not yet been added to the document,
                // but we have to specify the parent document.
                // The parent document is needed so the paragraph can correctly work
                // with styles and other document-wide information.
                //Paragraph para = new Paragraph(doc);
                //body.AppendChild(para);

                // We can set some formatting for the paragraph
                //para.ParagraphFormat.StyleName = "Heading 1";
                //para.ParagraphFormat.Alignment = ParagraphAlignment.Left;

               

                // So far we have one empty pararagraph in the document.
                // The document is valid and can be saved, but lets add some text before saving.
                // Create a new run of text and add it to our paragraph.
                //Run run = new Run(doc);
                //run.Text = "Hello World!";
                //run.Font.Color = System.Drawing.Color.Red;
                //para.AppendChild(run);

                //插入目录代码(TOC)
              
                builder.InsertTableOfContents("//o /"1-3/" //h //z //u");
                builder.InsertParagraph();
               
                builder.InsertBreak(BreakType.PageBreak);
                builder.InsertParagraph();


                //当前的段落
                Paragraph curParagraph = builder.CurrentParagraph;
               
                //标题2
                curParagraph.ParagraphFormat.StyleName = "Heading 2";
                //多级编号
                List list = doc.Lists.Add(ListTemplate.OutlineLegal);

                builder.ListFormat.List = list;
                builder.ListFormat.ListLevelNumber = 0;
                builder.ParagraphFormat.Alignment = ParagraphAlignment.Left;
                builder.Writeln("第一个标题。");
                curParagraph = builder.CurrentParagraph;
                curParagraph.ParagraphFormat.StyleName = "Normal";
                builder.ListFormat.List = null;
                builder.Writeln("这是标题下的一行。");

                curParagraph = builder.CurrentParagraph;
                //设置标题2的另外一种方法
                builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading2;
                builder.ListFormat.List = list;
                builder.ListFormat.ListLevelNumber = 0;


                builder.Writeln("第二个标题。");
                builder.ListFormat.ListLevelNumber = 1;
                curParagraph = builder.CurrentParagraph;

                builder.ParagraphFormat.StyleIdentifier = StyleIdentifier.Heading3;
                builder.Writeln("第2-1个标题。");

                curParagraph = builder.CurrentParagraph;
                curParagraph.ParagraphFormat.StyleName = "Normal";
                builder.ListFormat.List = null;
                builder.Writeln("这是标题下的一行。");


                //更新目录和页码,否则TOC代码不能更新
              
                builder.MoveToDocumentStart();
                doc.UpdateFields();

                //doc.UpdatePageLayout();
                //doc.UpdateTableLayout();

               

 

                //保存文档
                doc.Save("c://output.doc");
                tbStatus.Text = "创建成功";
            }
            catch (Exception ex)
            {undefined
                tbStatus.Text = "创建失败" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
            }
        }

        private void btnPrint_Click(object sender, EventArgs e)
        {undefined
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);


            PrintDialog printDlg = new PrintDialog();

            // Initialize the print dialog with the number of pages in the document.

            printDlg.AllowSomePages = true;

            printDlg.PrinterSettings.MinimumPage = 1;

            printDlg.PrinterSettings.MaximumPage = doc.PageCount;

            printDlg.PrinterSettings.FromPage = 1;

            printDlg.PrinterSettings.ToPage = doc.PageCount;

            printDlg.ShowDialog();


        }

        private void btnFooter_Click(object sender, EventArgs e)
        {undefined
            Document doc = new Document();
            DocumentBuilder builder = new DocumentBuilder(doc);
            try
            {undefined
                Section currentSection = builder.CurrentSection;
                PageSetup pageSetup = currentSection.PageSetup;

                builder.MoveToHeaderFooter(HeaderFooterType.HeaderFirst);
                builder.Font.Name = "Arial";
                builder.Font.Bold = true;
                builder.Font.Size = 14;


                //HeaderFooterCollection headersFooters = doc.FirstSection.HeadersFooters;
                //HeaderFooter footer = headersFooters[HeaderFooterType.FooterPrimary];
                builder.Writeln("Ordinov");
                pageSetup.HeaderDistance = 20;

                //footer.Range.Replace("Ordinov", "Copyright (C) 2010 by Ordinov Ltd. Co.", false, false);

                //保存文档
                doc.Save("c://output.doc");
                tbStatus.Text = "创建成功";
            }
            catch (Exception ex)
            {undefined
                tbStatus.Text = "创建失败:" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
            }
        }

        /// <summary>
        ///
        /// 输出文件夹结构信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnFileStructure_Click(object sender, EventArgs e)
        {undefined
            try
            {undefined
                tbStatus.Text = "正在分析结构。。。。。。";
                //输入要分析的文件夹
                getFiles("C://test//撒旦法");
                tbMessage.Text = tbmessage;
                tbStatus.Text = "文件结构分析完毕";
            }
            catch (Exception ex)
            {undefined
                tbStatus.Text = "创建失败:" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
            }
        }

        /// <summary>
        /// 获取文件夹下的所有有关测试记录文件及目录信息
        /// </summary>
        /// <param name="folderPath"></param>
        ///
        public void getFiles(string folderPath)
        {undefined
            //传入的路径
            DirectoryInfo DirectoryArray = new DirectoryInfo(folderPath);

            //传入路径下直接的目录
            DirectoryInfo[] Directorys = DirectoryArray.GetDirectories();

            //传入路径下的测试目录文件夹
            DirectoryInfo directoryRecordArray = new DirectoryInfo(folderPath + "//测试记录");

            //测试目录下的文件
            FileInfo[] Files = null;

            //先输出文件
            if (directoryRecordArray.Exists == true)
            {undefined
                //传入的目录下“测试记录”目录
              
                Files = directoryRecordArray.GetFiles();

                foreach (FileInfo inf in Files)
                {undefined
                    if(isRightFile(inf,".rec"))
                        tbmessage += inf.FullName+ "/r/n";
                }
            }

            //输入目录
            foreach (DirectoryInfo dinf in Directorys)
            {undefined
                //去除项目专用目录
                if (dinf.Name.Equals("测试记录") || dinf.Name.Equals("测试说明") || dinf.Name.Equals("测试追踪") || dinf.Name.Equals("问题报告"))
                    continue;

                //判断下面是否有文件(包含SubFolder的判断,只要有一个文件存在,即输出该目录)
                if(isRightFolder(dinf))
                    tbmessage += dinf.FullName + "/r/n";
                getFiles(dinf.FullName);
            }

        }

        /// <summary>
        /// 检查文件类型是否正确
        /// </summary>
        /// <param name="file"></param>
        /// <returns></returns>
        public bool isRightFile(FileInfo file,String fileSuf)
        {undefined
            try
            {undefined
                if (file.Name.IndexOf(fileSuf) == -1)
                    return false;
                return true;

            }
            catch (Exception ex)
            {undefined

                tbStatus.Text = "判断文件后缀出错:" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
                return false;
            }
        }

        /// <summary>
        /// 看目录下是否有文件存在,检查包含子目录
        /// </summary>
        /// <param name="dinf"></param>
        /// <returns></returns>
        public bool isRightFolder(DirectoryInfo dinf)
        {undefined
            try
            {undefined
                //传入的路径
                DirectoryInfo DirectoryArray = dinf;

                //传入路径下直接的目录
                DirectoryInfo[] Directorys = DirectoryArray.GetDirectories();

                //传入路径下的测试目录文件夹
                DirectoryInfo directoryRecordArray = new DirectoryInfo(dinf.FullName + "//测试记录");
            
                //测试目录下的文件
                FileInfo[] Files = null;

                //先判断当前目录下是否有文件
                if (directoryRecordArray.Exists == true)
                {undefined
                   
                    Files = directoryRecordArray.GetFiles();

                    foreach (FileInfo inf in Files)
                    {undefined
                        if (isRightFile(inf, ".rec"))
                            return true;
                    }
                }


                //再判断子目录下是否有文件
                foreach (DirectoryInfo df in Directorys)
                {undefined
                    //去除项目专用目录
                    if (df.Name.Equals("测试记录") || df.Name.Equals("测试说明") || df.Name.Equals("测试追踪") || df.Name.Equals("问题报告"))
                        continue;

                    //继续判断是否有文件
                    isRightFolder(df);
                }

                return false;

            }
            catch (Exception ex)
            {undefined

                tbStatus.Text = "判断文件后缀出错:" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
                return false;
            }

        }


        /// <summary>
        /// 分析页面中的页码,前提是要在文档中把所有的Section分配好。
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPages_Click(object sender, EventArgs e)
        {undefined
            try
            {undefined
                tbMessage.Text = "正在生成文档......"+"/r/n";
                //生成一个文档
                Document doc = new Document();
                DocumentBuilder builder = new DocumentBuilder(doc);
                Section curSection = builder.CurrentSection;

                builder.MoveToDocumentEnd();

                builder.Writeln("这是封面");
                //插入封面
                Document doctemp = new Document("c://testtemplate.doc");
                doc.AppendDocument(doctemp, ImportFormatMode.KeepSourceFormatting);
                builder.MoveToDocumentEnd();
                builder.Writeln("插入文档后");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("插入分页符后");
                //插入一个连续的分节符
                builder.InsertBreak(BreakType.SectionBreakContinuous);
                builder.Writeln("插入分节符后");
                curSection = builder.CurrentSection;
                curSection.HeadersFooters.LinkToPrevious(false);
              
                //插入几个分页符
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("插入分页符1后");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("插入分页符2后");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("插入分页符3后");
                builder.InsertBreak(BreakType.PageBreak);
                builder.Writeln("插入分页符4后");
                curSection = builder.CurrentSection;

                curSection = doc.Sections[doc.Sections.Count - 1];

              
                builder.Write("Page ");
                builder.InsertField("PAGE", "");
                builder.Write(" of ");
                builder.InsertField("SECTIONPAGES", "");


                doc.UpdatePageLayout();
                doc.UpdateFields();

                tbMessage.Text += "" + "/r/n";
                tbStatus.Text = "分析页码完毕";

                //保存文档
                doc.Save("c://output.doc");
            }
            catch (Exception ex)
            {undefined
                tbStatus.Text = "创建失败:" + ex.Message;
                tbMessage.Text = (ex.StackTrace);
            }
        }


    }
}

————————————————

原文链接:https://blog.csdn.net/dfcj1010/article/details/6164947

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值