今天使用.net做一个票据打印模块时,学习几点,分享一下。
第一点,在.net下使用基于word模板生出新的word文档
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using Microsoft.Office.Interop.Word;
namespace DzWordUtil
{
public class WordUtil
{
private ApplicationClass WordApp;
private Document WordDoc;
private object missing = Type.Missing;
private static bool isOpened = false;//判断word模版是否被占用
/// <summary>
/// 将Word另存为。strFileName为另存为文件名(含地址),isReplace是否删除已经存在的文件。
/// </summary>
/// <param name="strFileName">另存为的文件名</param>
/// <param name="isReplace">是否删除</param>
public void SaveAs(string strFileName, bool isReplace)
{
if (isReplace && File.Exists(strFileName))
{
File.Delete(strFileName);
}
object fileName = strFileName;
try
{
WordDoc.SaveAs(ref fileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing,
ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
}
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
}
/// <summary>
/// 定义一个Word.Application 对象
/// </summary>
private void activeWordApp()
{
WordApp = new ApplicationClass();
}
/// <summary>
/// 退出模板编辑,释放相应资源。
/// </summary>
public void Quit()
{
try
{
WordDoc.Close(ref missing, ref missing, ref missing);
WordApp.Application.Quit(ref missing, ref missing, ref missing);
isOpened = false;
}
catch (Exception Ex)
{
throw new Exception(Ex.Message);
}
}
public void PrintDialog(string strFileName,string printerName = null)
{
if (File.Exists(strFileName))
{
activeWordApp();
WordApp.Visible = false;
object oPrintFile = (object)strFileName;
try
{
while (isOpened)
{
System.Threading.Thread.Sleep(500);
}
WordDoc = WordApp.Documents.Add(ref oPrintFile, ref missing, ref missing, ref missing);
isOpened = true;
WordDoc.Activate();
//WordDoc.PrintPreview();
if (printerName != null)
{
WordApp.ActivePrinter = printerName;
}
WordDoc.PrintOut();
this.Quit();
}
catch (Exception Ex)
{
Quit();
isOpened = false;
throw new Exception(Ex.Message);
}
}
}
/// <summary>
/// 基于模版新建Word文件。strTemppath为模版地址。
/// </summary>
/// <param name="strTemppath">模版地址</param>
public void OpenTempelte(string strTemppath)
{
activeWordApp();
WordApp.Visible = false;
object oTemplate = (object)strTemppath;
try
{
while (isOpened)
{
System.Threading.Thread.Sleep(500);
}
WordDoc = WordApp.Documents.Add(ref oTemplate, ref missing, ref missing, ref missing);
isOpened = true;
WordDoc.Activate();
}
catch (Exception Ex)
{
Quit();
isOpened = false;
throw new Exception(Ex.Message);
}
}
/// <summary>
/// 添加文本内容到指定位置。LabelId为书签名,Content为文本内容。
/// </summary>
/// <param name="LabelId">书签名</param>
/// <param name="Content">图片地址</param>
public void FillLable(string LabelId, string Content)
{
object bkmC = LabelId;
if (WordApp.ActiveDocument.Bookmarks.Exists(LabelId) == true)
{
WordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();
}
WordApp.Selection.TypeText(Content);
}
/// <summary>
/// 添加图片到指定位置。LabelId为书签名,imgUrl为图片地址。
/// </summary>
/// <param name="LabelId">书签名</param>
/// <param name="imgUrl">图片地址</param>
public void addPic(String LabelId, String imgUrl)
{
if (LabelId != null && LabelId.Length > 0 && imgUrl != null && imgUrl.Length > 0)
{
object LinkToFile = false;
object SaveWithDocument = true;
object bkmC = LabelId;
if (WordApp.ActiveDocument.Bookmarks.Exists(LabelId) == true)
{
WordApp.ActiveDocument.Bookmarks.get_Item(ref bkmC).Select();
}
WordApp.Selection.InlineShapes.AddPicture(imgUrl, ref LinkToFile, ref SaveWithDocument, ref missing);
}
}
}
}
上面的代码,有部分为转载了网络上。
string templatePath = templetUrl;
//新建Word工具对象
WordUtil wordUtil = new WordUtil();
//导入模版
wordUtil.OpenTempelte(templatePath);
//添加数据到书签
wordUtil.FillLable("Define_ID","08-1-502");
wordUtil.FillLable("Operat_Time", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
//因为要保留模板,所以另存为。
wordUtil.SaveAs(System.Windows.Forms.Application.StartupPath +"\\testResult.doc", true);
//操作完成,退出Word工具系统。
wordUtil.Quit();
使用上面代码就可以生成一个新的word文档
第二点就是利用Microsoft.Office.Interop.Word中PrintOut功能。
因为.net下打印功能和.word下打印功能有点出入
转载
Background 如果为 true,则可以让自定义项代码在打印文档时继续工作。
Append 如果为 true,则会将文档追加到 OutputFileName 参数指定的文件;如果为 false,则会改写 OutputFileName 的内容。
Range 页面范围。可以是任何 WdPrintOutRange 值。
OutputFileName 如果 PrintToFile 为 true,则此参数指定输出文件的路径和文件名。
From 当 Range 设置为 wdPrintFromTo 时的起始页码。
To 当 Range 设置为 wdPrintFromTo 时的结束页码。
Item 要打印的项。可以是任何 WdPrintOutItem 值。
Copies 要打印的份数。
Pages 要打印的页码和页码范围,由逗号分隔。例如,“2, 6-8”意为打印第 2 和第 6、7、8页。
PageType 要打印的页面的类型。可以是任何 WdPrintOutPages 值。
PrintToFile 如果为 true,则将打印机指令发送到文件。请确保使用 OutputFileName 指定一个文件名。
Collate 在打印多份文档时,如果为 true,则先打印该文档的所有页,然后再打印下一份。
ActivePrinterMacGX 此参数仅在 Microsoft Office Macintosh Edition 中可用。
ManualDuplexPrint 如果为 true,则在没有双面打印装置的打印机上打印双面文档。如果此参数为 true,则忽略 PrintBackground 和 PrintReverse 属性。
PrintZoomColumn 希望 Word 在一页上水平布置的页数。可以为 1、2、3 或 4。PrintZoomRow 希望 Word 在一页上垂直布置的页数。可以为 1、2 或 4。
PrintZoomPaperWidth 希望 Word 将打印页缩放到的宽度(以缇表示,20 缇 = 1 磅)。
PrintZoomPaperHeight 希望 Word 将打印页缩放到的高度(以缇表示)。
第三点,分享一个链接
http://technet.microsoft.com/zh-cn/library/microsoft.office.interop.word%28v=office.11%29.aspx
分享到:
相关推荐
### Microsoft.Office.Interop.Word - C#操作Word #### 一、概述 `Microsoft.Office.Interop.Word` 是.NET Framework 提供的一个库,允许开发人员使用C#语言编写应用程序来操作Microsoft Word文档。这种操作通常...
本文将详细解析如何利用C#、Microsoft Office Interop库以及Word模板来实现这一功能。 首先,我们需要了解`Interop.Word`。这是.NET Framework提供的一组接口,允许C#代码与Microsoft Word应用程序进行交互,包括...
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); ``` 2. **打开Word文档**: 使用`wordApp`对象的`Documents.Open()`方法打开指定路径的Word文档: `...
通过引用`Microsoft.Office.Interop.Word`命名空间,你可以创建Word对象并执行各种操作,如打开文档、编辑内容和打印。 代码示例可能会包含以下步骤: 1. 引用库: 在C#项目中,添加对`Microsoft.Office.Interop....
首先,要实现批量打印Word文档,我们需要借助Microsoft Office Interop库,这是.NET Framework的一部分,允许我们与Office应用程序(如Word)进行交互。在C#项目中,我们需要添加对`Microsoft.Office.Interop.Word`...
1. **Office-Tools**:这可能指的是Microsoft Office Interop库,这是一个允许.NET应用程序与Microsoft Office应用程序(如Word)进行交互的接口。通过这个库,开发者可以编程方式打开、编辑和创建Word文档。然而,...
首先,我们需要引用Microsoft.Office.Interop.Word库,这个库提供了与Word交互的接口。确保项目引用中包含这个库,如果没有,可以通过NuGet包管理器安装Microsoft.Office.Interop.Word。 ### 获取Word文档页数 ...
在VB.NET中,这通常通过创建`Microsoft.Office.Interop.Word.Application`对象来实现。 以下是实现手动双面打印的关键步骤: 1. **创建Word应用程序对象**: ```vbnet Dim wordApp As New Microsoft.Office....
首先,需要引用`Microsoft.Office.Interop.Word`库,然后创建Word应用程序实例,打开Word文档,设置适当的页面布局和打印选项,最后模拟打印到一个TIFF虚拟打印机。这种方法的优点是直接且灵活,但缺点是需要安装...
在实现这个功能时,C#可以使用`Microsoft.Office.Interop.Word`库,这是Office Interop组件,允许C#代码与Word应用程序进行交互。开发者可能首先打开`tz.dot`模板,然后遍历`data.mdb`中的每一项记录,用数据替换...
Microsoft.Office.Interop.Word.Application wordApp = new Microsoft.Office.Interop.Word.Application(); wordApp.Visible = true; wordApp.Documents.Open("path_to_your_document.docx", ReadOnly: true); ...
1. 引用Office Interop库:在C#项目中,你需要添加对`Microsoft.Office.Interop.Word`命名空间的引用。这可以通过右键点击项目,选择“管理NuGet程序包”,然后搜索并安装`Microsoft.Office.Interop.Word`来实现。 ...
在C#编程环境中,我们可以利用Microsoft.Office.Interop.Word这个命名空间中的类来与Word应用程序进行交互,从而实现对Word文档的创建、编辑以及打印操作。以下是一个详细的步骤介绍,讲解如何在C#中调用Word进行...
首先,我们需要在项目中引入Microsoft.Office.Interop.Word命名空间,这是.NET Framework提供的一个接口,允许我们通过C#代码与Word应用程序进行交互。在Visual Studio中,可以右键点击项目,选择“添加引用”,然后...
这通常包括Microsoft Office Primary Interop Assemblies,它们提供了与Word对象模型交互所需的类型库。 2. **引入头文件和库**:在源代码中,你需要包含以下头文件: ```cpp #include #import "C:\Program ...
这通常通过使用Microsoft的Office Interop组件或者第三方库如Apache POI(针对.docx格式)来实现。Interop组件允许MFC应用直接调用Word的COM接口,操作Word文档,包括打开、读取、修改和保存。 5. **页面预览...
- **利用API**:开发者可以使用特定的API,如Microsoft Office Interop库或Aspose库,通过编程方式批量转换Word文档为TIFF。这种方法适用于大量文件转换,提高效率。 5. **注意事项** - **分辨率**:在转换过程中...
通过引用Microsoft Office的COM组件库,我们可以在不启动Word应用程序的情况下操作Word文档。 #### 三、开发环境配置 1. **开发工具**: Visual Studio。 2. **目标框架**: .NET Framework。 3. **Office版本**: 本...
在C#中,我们可以通过Microsoft.Office.Interop.Word命名空间来实现对Word的自动化控制。这个命名空间包含了各种类和接口,如Application、Document等,它们允许开发者创建、打开、编辑和打印Word文档。 【压缩包子...
WApp.ActiveDocument.PageSetup.Orientation = Microsoft.Office.Interop.Word.WdOrientation.wdOrientPortrait; ``` **解释**:此行代码用于设置文档页面的方向为纵向(portrait)。`wdOrientPortrait`是Word中定义...