using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Office.Interop.Word;
using System.Diagnostics;
namespace OfficeManager
{
public class WordClass : IDisposable
{
#region 字段
private _Application m_WordApp = null;
private _Document m_Document = null;
private object missing = System.Reflection.Missing.Value;
#endregion
#region 构造函数与析构函数
public WordClass()
{
m_WordApp = new ApplicationClass();
}
~WordClass()
{
try
{
if (m_WordApp != null)
m_WordApp.Quit(ref missing, ref missing, ref missing);
}
catch (Exception ex)
{
Debug.Write(ex.ToString());
}
}
#endregion
#region 属性
public _Document Document
{
get
{
return m_Document;
}
}
public _Application WordApplication
{
get
{
return m_WordApp;
}
}
public int WordCount
{
get
{
if (m_Document != null)
{
Range rng = m_Document.Content;
rng.Select();
return m_Document.Characters.Count;
}
else
return -1;
}
}
public object Missing
{
get
{
return missing;
}
}
#endregion
#region 基本任务
#region CreateDocument
public void CreateDocument(string template)
{
object obj_template = template;
if (template.Length <= 0) obj_template = missing;
m_Document = m_WordApp.Documents.Add(ref obj_template, ref missing, ref missing, ref missing);
}
public void CreateDocument()
{
this.CreateDocument("");
}
#endregion
#region OpenDocument
public void OpenDocument(string fileName, bool readOnly)
{
object obj_FileName = fileName;
object obj_ReadOnly = readOnly;
m_Document = m_WordApp.Documents.Open(ref obj_FileName, ref missing, ref obj_ReadOnly, 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);
}
public void OpenDocument(string fileName)
{
this.OpenDocument(fileName, false);
}
#endregion
#region Save & SaveAs
public void Save()
{
if (m_Document != null)
m_Document.Save();
}
public void SaveAs(string fileName)
{
object obj_FileName = fileName;
if (m_Document != null)
{
m_Document.SaveAs(ref obj_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);
}
}
#endregion
#region Close
public void Close(bool isSaveChanges)
{
object saveChanges = WdSaveOptions.wdDoNotSaveChanges;
if (isSaveChanges)
saveChanges = WdSaveOptions.wdSaveChanges;
if (m_Document != null)
m_Document.Close(ref saveChanges, ref missing, ref missing);
}
#endregion
#region 添加数据
/// <summary>
/// 添加图片
/// </summary>
/// <param name="picName"></param>
public void AddPicture(string picName)
{
if (m_WordApp != null)
m_WordApp.Selection.InlineShapes.AddPicture(picName, ref missing, ref missing, ref missing);
}
/// <summary>
/// 插入页眉
/// </summary>
/// <param name="text"></param>
/// <param name="align"></param>
public void SetHeader(string text, WdParagraphAlignment align)
{
this.m_WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
this.m_WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryHeader;
this.m_WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(text); //插入文本
this.m_WordApp.Selection.ParagraphFormat.Alignment = align; //设置对齐方式
this.m_WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; // 跳出页眉设置
}
/// <summary>
/// 插入页脚
/// </summary>
/// <param name="text"></param>
/// <param name="align"></param>
public void SetFooter(string text, WdParagraphAlignment align)
{
this.m_WordApp.ActiveWindow.View.Type = WdViewType.wdOutlineView;
this.m_WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekPrimaryFooter;
this.m_WordApp.ActiveWindow.ActivePane.Selection.InsertAfter(text); //插入文本
this.m_WordApp.Selection.ParagraphFormat.Alignment = align; //设置对齐方式
this.m_WordApp.ActiveWindow.View.SeekView = WdSeekView.wdSeekMainDocument; // 跳出页眉设置
}
#endregion
#region Print