C#编程:Word文档打印与预览实战

4星 · 超过85%的资源 需积分: 50 150 下载量 27 浏览量 更新于2024-09-10 收藏 15KB DOCX 举报
在C#编程中,实现Word文档的打印和预览功能需要借助Microsoft Office的COM接口。首先,确保您的开发环境已经安装了Office,这样可以在代码中引用相关的库。在本示例中,开发者使用的是Microsoft.Office.Interop.Word命名空间,它提供了一组用于操作Word文档的对象模型。 1. 引入依赖:在项目中,通过`using Microsoft.Office.Interop.Word;`语句导入所需库,这允许我们与Word应用程序进行交互。这里推荐使用版本11.0以上,但实际使用时需要根据您的Office版本进行调整。 2. 创建对象:定义两个全局变量`Application myWordApp = null;`和`Document doc = null;`,分别代表Word应用程序实例和文档实例。 3. 定义文件路径:使用变量`object Filename`存储目标Word文档的路径,可以是用户提供的路径,或者根据任务ID动态构建。同时,`object templateFile`表示一个模板文件路径,这里包含一个五列一行的表格结构,用于填充数据。 4. 复制模板文件:使用`System.IO.File.Copy()`方法将模板文件复制到目标位置,保持表格结构。 5. 初始化Word应用程序和打开文档:创建`myWordApp`实例,然后通过`doc = myWordApp.Documents.Open()`方法打开指定的Word文档。该方法接受多个参数,例如是否只读、是否保存自动恢复信息等,这里省略。 6. 设置页面设置:为了在文档中显示页码,使用`Selection.Sections[1].Footers`访问页眉或页脚区域,并设置页码对齐方式,如`Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter`,并指定开始页码。 7. 打印和预览:C#中的打印功能可以通过`doc.PrintOut()`实现,而预览则可能需要额外的控件支持,例如使用`doc.PrintPreview()`或在UI中嵌入一个Web浏览器查看文档。具体操作视应用程序的需求和界面设计而定。 总结来说,这个示例展示了如何使用C#通过COM对象操作Word文档,包括打开文档、设置页面属性和执行打印或预览功能。在实际应用中,可能还需要处理异常、优化用户体验以及考虑不同操作系统和Word版本兼容性的问题。
2012-02-29 上传
首先机子上安装有office,在COM中添加引用Microsoft.Word.11.0.Object.Library(或11.0以上) Microsoft.Office.Interop.Word.Application myWordApp = null; Microsoft.Office.Interop.Word.Document doc = null; object Filename = path + "\\" + TaskID + ".docx";//目的文件 object templateFile = System.Windows.Forms.Application.StartupPath + @"\Template.docx";//模板文件,有一个五列一行的表 System.IO.File.Copy(templateFile.ToString(), Filename.ToString(), true);//模板WORD中有一个五列的表头,分别是卡号,串口号,发送指令条数,接收指令条数,收发成功率 myWordApp = new Microsoft.Office.Interop.Word.Application(); doc = myWordApp.Documents.Open(ref Filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); /////显示页码 object oAlignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter; object oFirstPage = true; oAlignment = Microsoft.Office.Interop.Word.WdPageNumberAlignment.wdAlignPageNumberCenter; myWordApp.Selection.Sections[1].Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.Add(ref oAlignment, ref oFirstPage); myWordApp.Selection.Sections[1].Footers[Microsoft.Office.Interop.Word.WdHeaderFooterIndex.wdHeaderFooterPrimary].PageNumbers.NumberStyle = Microsoft.Office.Interop.Word.WdPageNumberStyle.wdPageNumberStyleNumberInDash; for (int i = 2; i < 102; i++)//举例100台 { doc.Tables[1].Rows.Add(ref Nothing);//表格增加一行 doc.Tables[1].Cell(i, 1).Range.Text = "250297";//卡号 doc.Tables[1].Cell(i, 2).Range.Text = "COM12";//串口号 doc.Tables[1].Cell(i, 3).Range.Text = "100";//发送指令条数 doc.Tables[1].Cell(i, 4).Range.Text = "99";//接收指令条数 doc.Tables[1].Cell(i, 5).Range.Text = "99%";//收发成功率 } doc.SaveAs(ref Filename, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); object savechanges = Microsoft.Office.Interop.Word.WdSaveOptions.wdDoNotSaveChanges;//不保存挂起的更改 ////下面是直接打印,文档不显示 //doc.PrintOut(ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); object readOnly=false; object isVisable = true;////文档打开状态为可视 doc = myWordApp.Documents.Open(ref Filename, ref Nothing, ref readOnly, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref isVisable, ref Nothing, ref Nothing, ref Nothing, ref Nothing); doc.PrintPreview();//打印预览