您的位置:首页 > 编程语言

word生成文档的试验代码

2013-11-12 11:25 309 查看

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

{

public partial class Form1 : Form

{

private static readonly ILog log = LogManager.GetLogger(typeof(Form1).Name);

private String tbmessage = "";

public Form1()

{

InitializeComponent();

}

private void Form1_Load(object sender, EventArgs e)

{

Aspose.Words.License license = new Aspose.Words.License();

license.SetLicense("License.lic");

}

/**

* 这是生成文档的试验代码

* @parameter sender

* @parameter e

*/

private void button1_Click(object sender, EventArgs e)

{

tbStatus.Text = "正在创建。。。。。。";

Document doc = new Document("c://4add.doc");

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

//写入字符串

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) {

tbMessage.Text = "创建失败:" + ex.Message;

}

}

private void button1_Click_1(object sender, EventArgs e)

{

tbStatus.Text = "打开Word文档";

try

{

Process p = Process.Start("c://output.doc");

}

catch (Exception ex)

{

tbMessage.Text = "打开Word文档失败(c://output.doc)!!具体原因是:" + ex.Message;

}

}

/**

*

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

*

* **/

private void btnGernerateDoc2_Click(object sender, EventArgs e)

{

tbStatus.Text = "正在创建。。。。。。";

Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

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)

{

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)

{

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)

{

// 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)

{

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

foreach (Node srcNode in srcSection.Body)

{

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

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

{

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)

{

System.Environment.Exit(0);

}

/// <summary>

/// 生成表格

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

private void button1_Click_2(object sender, EventArgs e)

{

tbStatus.Text = "正在创建。。。。。。";

Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

for (int i = 0; i < 10; i++)

{

//新建一个标题

//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++ )

{

for(int m=0;m<bbbb.Length;)

{

m = 0;

//行

for (int i = 0; i < 3; i++)

{

//列

for (int j = 0; j < 3; j++)

{

builder.MoveToCell(t, i, j, 0);

//第一行表头

if (i == 0)

{

builder.Font.Bold = true;

builder.Write(aaaa[j]);

builder.Font.Bold = false;

}

//序号

else if (j == 0)

{

builder.Write(""+i);

}

else

{

builder.Write(bbbb[m]);

m++;

}

}

}

}

}

doc.Save("c://output.doc");

tbStatus.Text = "创建成功";

}

catch (Exception ex)

{

tbMessage.Text = "创建失败" + ex.StackTrace;

}

}

private void btnHeading_Click(object sender, EventArgs e)

{

tbStatus.Text = "正在创建。。。。。。";

Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

// There are 9 levels in this list, lets try them all.

//for (int i = 0; i < 9; i++)

//{

// 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)

{

tbStatus.Text = "创建失败" + ex.Message;

tbMessage.Text = (ex.StackTrace);

}

}

private void btnGernerateHeading_Click(object sender, EventArgs e)

{

tbStatus.Text = "正在创建。。。。。。";

Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

// 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)

{

tbStatus.Text = "创建失败" + ex.Message;

tbMessage.Text = (ex.StackTrace);

}

}

private void btnPrint_Click(object sender, EventArgs e)

{

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)

{

Document doc = new Document();

DocumentBuilder builder = new DocumentBuilder(doc);

try

{

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)

{

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)

{

try

{

tbStatus.Text = "正在分析结构。。。。。。";

//输入要分析的文件夹

getFiles("C://test//撒旦法");

tbMessage.Text = tbmessage;

tbStatus.Text = "文件结构分析完毕";

}

catch (Exception ex)

{

tbStatus.Text = "创建失败:" + ex.Message;

tbMessage.Text = (ex.StackTrace);

}

}

/// <summary>

/// 获取文件夹下的所有有关测试记录文件及目录信息

/// </summary>

/// <param name="folderPath"></param>

///

public void getFiles(string folderPath)

{

//传入的路径

DirectoryInfo DirectoryArray = new DirectoryInfo(folderPath);

//传入路径下直接的目录

DirectoryInfo[] Directorys = DirectoryArray.GetDirectories();

//传入路径下的测试目录文件夹

DirectoryInfo directoryRecordArray = new DirectoryInfo(folderPath + "//测试记录");

//测试目录下的文件

FileInfo[] Files = null;

//先输出文件

if (directoryRecordArray.Exists == true)

{

//传入的目录下“测试记录”目录

Files = directoryRecordArray.GetFiles();

foreach (FileInfo inf in Files)

{

if(isRightFile(inf,".rec"))

tbmessage += inf.FullName+ "/r/n";

}

}

//输入目录

foreach (DirectoryInfo dinf in Directorys)

{

//去除项目专用目录

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)

{

try

{

if (file.Name.IndexOf(fileSuf) == -1)

return false;

return true;

}

catch (Exception ex)

{

tbStatus.Text = "判断文件后缀出错:" + ex.Message;

tbMessage.Text = (ex.StackTrace);

return false;

}

}

/// <summary>

/// 看目录下是否有文件存在,检查包含子目录

/// </summary>

/// <param name="dinf"></param>

/// <returns></returns>

public bool isRightFolder(DirectoryInfo dinf)

{

try

{

//传入的路径

DirectoryInfo DirectoryArray = dinf;

//传入路径下直接的目录

DirectoryInfo[] Directorys = DirectoryArray.GetDirectories();

//传入路径下的测试目录文件夹

DirectoryInfo directoryRecordArray = new DirectoryInfo(dinf.FullName + "//测试记录");

//测试目录下的文件

FileInfo[] Files = null;

//先判断当前目录下是否有文件

if (directoryRecordArray.Exists == true)

{

Files = directoryRecordArray.GetFiles();

foreach (FileInfo inf in Files)

{

if (isRightFile(inf, ".rec"))

return true;

}

}

//再判断子目录下是否有文件

foreach (DirectoryInfo df in Directorys)

{

//去除项目专用目录

if (df.Name.Equals("测试记录") || df.Name.Equals("测试说明") || df.Name.Equals("测试追踪") || df.Name.Equals("问题报告"))

continue;

//继续判断是否有文件

isRightFolder(df);

}

return false;

}

catch (Exception ex)

{

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)

{

try

{

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)

{

tbStatus.Text = "创建失败:" + ex.Message;

tbMessage.Text = (ex.StackTrace);

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: