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); } }
}}