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);
}
}
}
}
相关文章推荐
- Java根据word模板生成word文档之后台解析和实现及部分代码(二)
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)A
- php在程序中将网页生成word文档并提供下载的代码
- aspose.words生成word文档(.dox、.docx等)时,生成目录后,目录中的页码和实际页码不对应,代码中更新域都没用
- C# 生成word 文档 代码 外加 IIS报错解决方案
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)B
- java代码操作POI生成Word文档
- C#生成Word文档代码示例
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)C
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)D
- 通过java代码生成图片、word文档、pdf文档
- php在程序中将网页生成word文档并提供下载的代码
- php生成word文档的实例代码
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)E
- pb生成word文档代码
- VC生成word文档的部分代码
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)F
- 利用Java Apache POI 生成Word文档示例代码
- Java根据word模板生成word文档之后台解析和实现及部分代码(三)G
- 生成文档的试验代码