C#调用word打印
服务器端类:
public class WriteIntoWord {
public WriteIntoWord() {
// // TODO: 在此处添加构造函数逻辑 //
}
ApplicationClass app = null; //定义应用程序对象
Document doc = null; //定义 word 文档对象
Object missing = System.Reflection.Missing.Value; //定义空变量
Object isReadOnly = false;
// 向 word 文档写入数据
public void OpenDocument(string FilePath)
{
killWinWordProcess();
object unknow = Type.Missing;
object filePath = FilePath;//文档路径
app =new ApplicationClass();
//打开文档
doc = app.Documents.Open(ref filePath, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);
doc.Activate();//激活文档
}
/// <summary>
/// </summary>
///<param name="BookmarkName">域标签</param>
/// <param name="dtables">写入域中的表内容</param>
///
//打开word,将对应数据写入word里对应书签域
public void WriteIntoDocumentTable(string BookmarkName, System.Data.DataTable dtables)
{
int b = dtables.Rows.Count;
int mm = dtables.Columns.Count;
Object missing = System.Reflection.Missing.Value; //定义空变量
object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
object NameBookMark = BookmarkName;
object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref NameBookMark);//定位标签
object Units = Microsoft.Office.Interop.Word.WdUnits.wdCell;
object Counts = 1;
object Extends = Microsoft.Office.Interop.Word.WdMovementType.wdMove;
for(int i=0;i<dtables.Rows.Count;i++)
{
for (int s = 0; s < dtables.Columns.Count; s++)
{
if (s == (dtables.Columns.Count - 1))
{
doc.ActiveWindow.Selection.TypeText(dtables.Rows[i][s].ToString());
if (i != (dtables.Rows.Count - 1))
{
doc.ActiveWindow.Selection.InsertRowsBelow(ref Counts);
doc.ActiveWindow.Selection.MoveRight(ref Units, ref Counts, ref Extends);
}
}
else
{
doc.ActiveWindow.Selection.TypeText(dtables.Rows[i][s].ToString());
doc.ActiveWindow.Selection.MoveRight(ref Units, ref Counts, ref Extends);
}
}
}
}
/// <summary>
/// </summary>
///<param name="BookmarkName">域标签</param>
/// <param name="dtables">写入域中的表内容</param>
/// //打开word,将对应数据写入word里对应书签域,限定3条数据,不需要插新行,只移动光标
public void WriteIntoDocumentTable3rows(string BookmarkName, System.Data.DataTable dtables)
{
int b = dtables.Rows.Count;
int mm = dtables.Columns.Count;
Object missing = System.Reflection.Missing.Value; //定义空变量
object Bookmark = (int)Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
object NameBookMark = BookmarkName;
object what = Microsoft.Office.Interop.Word.WdGoToItem.wdGoToBookmark;
doc.ActiveWindow.Selection.GoTo(ref what, ref missing, ref missing, ref NameBookMark);//定位标签
object Units = Microsoft.Office.Interop.Word.WdUnits.wdCell;
object Counts = 1;
object Extends = Microsoft.Office.Interop.Word.WdMovementType.wdMove;
for (int i = 0; i < dtables.Rows.Count; i++)
{
for (int s = 0; s < dtables.Columns.Count; s++)
{
if (s == (dtables.Columns.Count - 1))
{
doc.ActiveWindow.Selection.TypeText(dtables.Rows[i][s].ToString());
doc.ActiveWindow.Selection.MoveRight(ref Units, ref Counts, ref Extends);
doc.ActiveWindow.Selection.MoveRight(ref Units, ref Counts, ref Extends);
}
else
{
doc.ActiveWindow.Selection.TypeText(dtables.Rows[i][s].ToString());
doc.ActiveWindow.Selection.MoveRight(ref Units, ref Counts, ref Extends);
}
}
}
}
/// <summary>
/// </summary>
///<param name="parLableName">域标签</param>
/// <param name="parFillName">写入域中的内容</param>
///
//打开word,将对应数据写入word里对应书签域
public void WriteIntoDocument(string BookmarkName, string FillName)
{ object bookmarkName = BookmarkName;
Bookmark bm = doc.Bookmarks.get_Item(ref bookmarkName);//返回书签
bm.Range.Text = FillName;//设置书签域的内容
}
/// <summary>
/// 保存并关闭
/// </summary>
/// <param name="parSaveDocPath">文档另存为的路径</param>
/// public void Save_CloseDocument(string SaveDocPath)
{
object unknow = Type.Missing;
object savePath = SaveDocPath; //文档另存为的路径
Object saveChanges = app.Options.BackgroundSave;//文档另存为
doc.SaveAs(ref savePath, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow, ref unknow);
doc.Close(ref saveChanges, ref unknow, ref unknow);//关闭文档
app.Quit(ref unknow, ref unknow, ref unknow);//关闭应用程序
}
//强制杀掉winword进程
public void killWinWordProcess()
{
foreach (System.Diagnostics.Process p in System.Diagnostics.Process.GetProcessesByName("WINWORD"))
{
if (!p.HasExited)
{
p.Kill();
}
}
}
}

浙公网安备 33010602011771号