winform生成word表格并自动填充

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了winform生成word表格并自动填充相关的知识,希望对你有一定的参考价值。

使用工具
• Visual Studio
• Spire.Doc for .NET组件

在添加以下代码前,需要Spire.Doc组件,并从安装路径下的bin文件夹中引用Spire.Doc.dll到程序中。

代码
在Word中,表单控件主要分为两种:

• 旧式窗体域
• 内容控件 (Word 2010及以后版本)

下面看看如何使用Spire.Doc添加旧式窗体域和内容控件到Word模板文档。

添加旧式窗体域

Word 2007及以前的版本中是旧式窗体域。旧式窗体域分为:文本型窗体域、复选框型窗体域和下拉型窗体域。

下面的代码创建了一个Word文档,然后添加了一个表格,并给表格添加文本型、复选框型和下拉型窗体域,最后保护Word文档。


//创建Document实例
Document doc = new Document();
//添加一个section
Section section = doc.AddSection();

//标题
Paragraph title = section.AddParagraph();
TextRange titleText = title.AppendText("职位申请表");
titleText.CharacterFormat.FontName = "宋体";
titleText.CharacterFormat.FontSize = 16f;
title.Format.HorizontalAlignment = HorizontalAlignment.Center;

//添加一个7行2列的表格
Table table = section.AddTable(true);
table.ResetCells(7, 2);

//合并首行的单元格
table.ApplyHorizontalMerge(0, 0, 1);

//设置表头
TableRow headerRow = table.Rows[0];
headerRow.IsHeader = true;
headerRow.RowFormat.BackColor = Color.FromArgb(0x00, 0x71, 0xb6);
headerRow.Cells[0].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
Paragraph headerParagraph = headerRow.Cells[0].AddParagraph();
TextRange headerText = headerParagraph.AppendText("第一部分、个人信息");
headerText.CharacterFormat.Bold = true;

//添加段落到单元格[1,0]
Paragraph paragraph = table.Rows[1].Cells[0].AddParagraph();
TextRange textRange = paragraph.AppendText("姓名");

//添加文本型窗体到单元格[1,1]
paragraph = table.Rows[1].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Name");

//添加段落到单元格[2,0]
paragraph = table.Rows[2].Cells[0].AddParagraph();
textRange = paragraph.AppendText("年龄");

//添加文本型窗体到单元格[2,1]
paragraph = table.Rows[2].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Age");

//添加段落到单元格[3,0]
paragraph = table.Rows[3].Cells[0].AddParagraph();
textRange = paragraph.AppendText("婚否");

//添加复选框型窗体到单元格[3,1]
paragraph = table.Rows[3].Cells[1].AddParagraph();
AddCheckBoxFormField(paragraph, "Married");

//添加段落到单元格[4,0]
paragraph = table.Rows[4].Cells[0].AddParagraph();
textRange = paragraph.AppendText("专业");

//添加下拉型窗体到单元格[4,1]
paragraph = table.Rows[4].Cells[1].AddParagraph();
AddDropDownFormField(paragraph, "Major");

//添加段落到单元格[5,0]
paragraph = table.Rows[5].Cells[0].AddParagraph();
textRange = paragraph.AppendText("申请职位");

//添加文本型窗体到单元格[5,1]
paragraph = table.Rows[5].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Position");

//添加段落到单元格[6,0]
paragraph = table.Rows[6].Cells[0].AddParagraph();
textRange = paragraph.AppendText("申请理由");

//添加文本型窗体到单元格[6,1]
paragraph = table.Rows[6].Cells[1].AddParagraph();
AddTextFormField(paragraph, "Reason");

//创建段落样式
ParagraphStyle style = new ParagraphStyle(doc);
style.Name = "style";
style.CharacterFormat.FontName = "宋体";
style.CharacterFormat.FontSize = 11f;
doc.Styles.Add(style);

for (int i = 0; i < table.Rows.Count; i++)

//设置表格行高
table.Rows[i].Height = 20f;
for (int j = 0; j < table.Rows[i].Cells.Count; j++)

//设置单元格文本垂直对齐方式
table[i, j].CellFormat.VerticalAlignment = VerticalAlignment.Middle;
//设置单元格的宽度,即列宽
table[i, j].Width = 200f;
foreach (Paragraph para in table[i, j].Paragraphs)

//应用段落样式
para.ApplyStyle(style.Name);




//设置表格居中排列
table.TableFormat.HorizontalAlignment = RowAlignment.Center;

//保护文档,并设置模式为仅允许编辑表单域
doc.Protect(ProtectionType.AllowOnlyFormFields, "123");

//保存
doc.SaveToFile("AddFormFields.docx", FileFormat.Docx2013);


//添加文本型窗体、复选框型窗体和下拉型窗体的方法如下:
//添加文本型窗体
static void AddTextFormField(Paragraph paragraph, string fieldName)

TextFormField textForm = paragraph.AppendField(fieldName, FieldType.FieldFormTextInput) as TextFormField;
textForm.DefaultText = "";
textForm.Text = "";


//添加复选框型窗体
static void AddCheckBoxFormField(Paragraph paragraph, string fieldName)

CheckBoxFormField checkBoxForm = paragraph.AppendField(fieldName, FieldType.FieldFormCheckBox) as CheckBoxFormField;
checkBoxForm.SizeType = CheckBoxSizeType.Exactly;
checkBoxForm.CheckBoxSize = 8;


//添加下拉型窗体
static void AddDropDownFormField(Paragraph paragraph, string fieldName)

DropDownFormField dropDownForm = paragraph.AppendField(fieldName, FieldType.FieldFormDropDown) as DropDownFormField ;
dropDownForm.DropDownItems.Add("选择一个专业");
dropDownForm.DropDownItems.Add("计算机科学与技术");
dropDownForm.DropDownItems.Add("软件工程");
dropDownForm.DropDownItems.Add("信息管理");
dropDownForm.DropDownItems.Add("电子商务");



用户打开下面的生成文档,只能编辑表格中的窗体,不能修改其他内容:
添加内容控件
Word 2010及以后的版本中添加了内容控件。下面就介绍如何使用Spire.Doc添加内容控件到Word文档。
Spire.Doc支持多种内容控件类型,可在枚举SdtType中查看。
参考技术A 1.首先打开word文档,创建一个简单的表格,如图。

2.选择开始菜单,点击项目编号,选择定义新编号格式。

3.弹出的定义新编号格式页,编号样式按要求选择,编号格式输入重复的内容,例如:班级。点击确定。
4.在表格末尾使用Tab键插入一行,会自动填充班级。
参考技术B 首先打开word文档,创建一个简单的表格,如图。
2
/4
选择开始菜单,点击项目编号,选择定义新编号格式。
3
/4
弹出的定义新编号格式页,编号样式按要求选择,编号格式输入重复的内容,例如:班级。点击确定。
4
/4
在表格末尾使用Tab键插入一行,会自动填充班级。如图所示

winform怎么实现表格效果?

就像web程序一样在一个windows 窗体上也 添加人员姓名年龄 等信息,但是文本框和lable什么的都是在表格里的,看着整齐嘛 呵呵 有哪个控件能实现表格的效果呢?

在VS工具箱的容器中有个TableLayoutPanel的控件 用起来跟表格差不多
参考:http://msdn.microsoft.com/zh-cn/library/ms171686(VS.90).aspx
参考技术A gridview 参考技术B TableLayoutPanel

以上是关于winform生成word表格并自动填充的主要内容,如果未能解决你的问题,请参考以下文章

怎么把EXCEL内容自动填充到WORD里?

word表格中快速自动填充内容的过程是啥

excel内容自动填充到word

帆软表格填一个值,其他表格自动填充该值

如何让Excel自动编号及序号自动填充

C# winform中以excel的方式编辑表格