C#通过模板创建Word文件
2015-06-26 09:45
543 查看
C#通过模板创建Word文件。模板文件中创建书签bookmark,并在调用时给书签赋值。
模板创建文件类
调用方法
模板创建文件类
/// <summary> ///创建Word格式的Report 的摘要说明 /// </summary> public class CreateWordReport { private _Application wordApp = null; private _Document wordDoc = null; public _Application Application { get { return wordApp; } set { wordApp = value; } } public _Document Document { get { return wordDoc; } set { wordDoc = value; } } //通过模板创建新文档 public void CreateNewDucument(string filePath) { killWinWordProcess(); wordApp = new ApplicationClass(); wordApp.DisplayAlerts = WdAlertLevel.wdAlertsNone; wordApp.Visible = false; object miss = System.Reflection.Missing.Value; object templateName = filePath; wordDoc = wordApp.Documents.Open(ref templateName, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); } //保存新文件 public void SaveDocument(string filePath) { object fileName = filePath; object format = WdSaveFormat.wdFormatDocument; //保存格式 object miss = System.Reflection.Missing.Value; wordDoc.SaveAs(ref fileName, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss, ref miss); //关闭wordDoc,wordApp对象 object SaveChanges = WdSaveOptions.wdSaveChanges; object OriginalFormat = WdOriginalFormat.wdOriginalDocumentFormat; object RouteDocument = false; wordDoc.Close(ref SaveChanges, ref OriginalFormat, ref RouteDocument); wordApp.Quit(ref SaveChanges, ref OriginalFormat, ref RouteDocument); } //写入页眉 public void InsertHeader(string docHeader) { wordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView; wordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader; wordApp.ActiveWindow.ActivePane.Selection.InsertAfter(docHeader); //页眉内容 } //在书签处插入值 public bool InsertValue(string bookmark, string value) { object bkObj = bookmark; if (wordApp.ActiveDocument.Bookmarks.Exists(bookmark)) { //该方法会截取value,输入文本内容显示不全 //wordApp.ActiveDocument.Bookmarks.get_Item(ref bkObj).Select(); //wordApp.Selection.TypeText(value); Range range = wordApp.ActiveDocument.Bookmarks.get_Item(ref bkObj).Range;//表格插入位置 range.Text = value;//在书签处插入文字内容 return true; } return false; } //在书签处插入表格 public Table InsertTable(string bookmark, int rows, int columns) { object miss = System.Reflection.Missing.Value; object oStart = bookmark; Range range = wordDoc.Bookmarks.get_Item(ref oStart).Range; //表格插入位置 Table newTable = wordDoc.Tables.Add(range, rows, columns, ref miss, ref miss); //设置表的样式 newTable.Borders.Enable = 1; //允许有实线边框 newTable.Borders.OutsideLineWidth = WdLineWidth.wdLineWidth050pt; //边框宽度 //newTable.PreferredWidth = 17; newTable.AllowAutoFit = true; return newTable; } //给表格中单元格插入元素,table所在表格,row行号,column列号,value插入的元素 public void InsertCell(Microsoft.Office.Interop.Word.Table table, int row, int column, string value) { table.Cell(row, column).Range.Text = value; } //给表格插入一行数据,n为表格的序号,row行号,column列数,values插入的值 public void InsertCell(Microsoft.Office.Interop.Word.Table table, int row, int columns, string[] values) { for (int i = 0; i < columns; i++) { table.Cell(row, i + 1).Range.Text = values[i]; } } // 杀掉winword.exe进程 public void killWinWordProcess() { System.Diagnostics.Process[] processes = System.Diagnostics.Process.GetProcessesByName("WINWORD"); foreach (System.Diagnostics.Process process in processes) { if (process.MainWindowTitle == "") { process.Kill(); } } } }
调用方法
CreateWordReport report = new CreateWordReport(); string templateFile = System.IO.Path.Combine("Repx", @"NotamListTemplate.dot");//模板文件,也可为doc文件 report.CreateNewDucument(System.IO.Path.Combine(Application.StartupPath, templateFile)); //将内容写入书签位置 report.InsertValue("bookmarkUser", ""); report.InsertValue("bookmarkDate", DateTime.Now.ToString("yyyy年M月dd日")); report.InsertValue("bookmarkNavigateRoute", sbContentFir.ToString());//重要通告(航路) report.InsertValue("bookmarkNotamContent", sbContentAd.ToString());//重要通告(机场) report.SaveDocument(path);
相关文章推荐
- c#删除文件夹(目录)
- [转]C#开发系统服务时用的定时器组件
- C#中文件名或文件路径非法字符判断方法
- C# DataTable中查询指定字段名称的数据
- c#有关udp可靠传输(包传输数据包) 升级
- c# label的内容显示不全
- 基于c# 类、接口、结构的联系与区别详解
- C#学习笔记二(函数高级参数)
- C# WPF TextBox绑定数据的简单应用
- csharp: get Web.Services WebMethod
- C# 操作office
- WP8.1发送Post或Get请求顺带文件上传
- C# 函数式编程
- ArcGIS / C#开发 无法读取Excel(*.xlsx)文件
- C# 只允许运行一个实例
- C# 实体类序列化与反序列化一 (XmlSerializer)
- C# 实体类序列化与反序列化一 (XmlSerializer)
- c# des 加密 解密
- C#读取文件路径
- 在C#中子线程如何操作主窗口线程上的控件