版本word2003
在web.config中加入<identity impersonate="true"/>
using System;
using Word;
using Excel;
using System.Data;
using System.Web.UI.HtmlControls;
using System.IO;
namespace ToPDF.Office
{
/// <summary>
/// 操作word文档
/// </summary>
public class OperWord
{
private Word.ApplicationClass MyWordApp;
private Word.Document MyDoc;
private Word.Range MyRange;
private Word.Selection MySel;
public OperWord()
{
MyWordApp = new Word.ApplicationClass();//构造ApplicationClass类的对象
}
#region 选择文本
/// <summary>
/// 选择文本
/// </summary>
/// <param name="para">段落</param>
public void SelectRange(int para)
{
MyDoc = new Word.DocumentClass();
MyRange = MyDoc.Paragraphs[para].Range;
MyRange.Select();
}
/// <summary>
/// 选择文本
/// </summary>
/// <param name="para">/段落</param>
/// <param name="Sentences">/句子</param>
public void SelectRange(int para,int Sentences)
{
MyRange = MyDoc.Paragraphs[para].Range.Sentences[Sentences];
MyRange.Select();
}
/// <summary>
/// 选择文本
/// </summary>
/// <param name="Stat">/开始处</param>
/// <param name="End">/结束处</param>
/// <param name="flag">/是否选择</param>
public void SelectRange(object Stat,object End,bool flag)
{
if(flag)
{
MyDoc.Range(ref Stat, ref End);
MyRange.Select();
}
}
#endregion
#region 生成新文档
/// <summary>
/// 生成空的新文档
/// </summary>
public void NewDoc()
{
object missing = System.Reflection.Missing.Value;
MyDoc = MyWordApp.Documents.Add(ref missing,ref missing,ref missing,ref missi
ng);
MyDoc.Activate();
}
/// <summary>
/// 使用模板生成新文档
/// </summary>
/// <param name="FileName">/</param>
public void NewDoc(string FileName)
{
object missing = System.Reflection.Missing.Value;
object isVisble = true;
object fileName = FileName;
MyDoc = MyWordApp.Documents.Add(ref fileName,ref missing,ref missing,ref isVi
sble);
MyDoc.Activate();
}
#endregion
#region 打开存在的文档
/// <summary>
/// 打开存在的文档
/// </summary>
/// <param name="FileName">/文件名</param>
/// <param name="ReadOnly">/是否只读</param>
public void OpenFile(string FileName,bool ReadOnly)
{
object fileName;
object isReadOnly;
object isVisible;
object missing = System.Reflection.Missing.Value;
fileName = FileName;
isReadOnly = ReadOnly;
isVisible = false;
MyDoc = MyWordApp.Documents.Open(ref fileName,ref missing,ref isReadOnly,ref
missing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,
ref missing,ref isVisible,ref missing,ref missing,ref missing,ref missing);
MyDoc.Activate();//使当前文本获得焦点
}
#endregion
#region 退出word
/// <summary>
/// 退出word
/// </summary>
/// <param name="SaveType">/保存类型0:自动保存1:提示保存2:不保存</param>
public void Quit(int SaveType)
{
object Save;
object missing = Type.Missing;
Save = Word.WdSaveOptions.wdPromptToSaveChanges;
switch(SaveType)
{
case 0:
Save = Word.WdSaveOptions.wdSaveChanges;
break;
case 1:
Save = Word.WdSaveOptions.wdPromptToSaveChanges;
break;
case 2:
Save = Word.WdSaveOptions.wdDoNotSaveChanges;
break;
}
MyWordApp.Quit(ref Save,ref missing,ref missing);
MyWordApp = null;
}
#endregion
#region 关闭文档
/// <summary>
/// 关闭文档
/// </summary>
/// <param name="type">/0:当前文档,1:所有文档</param>
public void CloseFile(int type)
{
object saveType = Word.WdSaveOptions.wdDoNotSaveChanges;
object missing = Type.Missing;
if (type== 0)
{
MyWordApp.Documents.Close(ref saveType,ref missing,ref missing);
}
else
{
MyDoc.Close(ref saveType,ref missing, ref missing);
Quit(2);
}
}
#endregion
#region 保存文档
public string SaveFile(string FileName)
{
object fName = FileName;
object missing = Type.Missing;
try
{
MyDoc.SaveAs(ref fName,ref missing,ref missing,ref missing,ref missing,ref m
issing,ref missing,ref missing,ref missing,ref missing,ref missing,ref missing,r
ef missing,ref missing,ref missing,ref missing);
}
catch(Exception e)
{
return e.Message.ToString();
}
return "true";
}
#endregion
#region 插入
/// <summary>
/// 插入空行
/// </summary>
public void Insert()
{
MyWordApp.Selection.TypeParagraph();
}
/// <summary>
/// 插入指定得空行数
/// </summary>
/// <param name="lines"></param>
public void Insert(int lines)
{
for (int i = 0; i < lines; i++)
{
MyWordApp.Selection.TypeParagraph();
}
}
/// <summary>
/// 插入文本
/// </summary>
/// <param name="text"></param>
public void Insert(String text)
{
MyWordApp.Selection.TypeText(text);
}
/// <summary>
/// 插入表
/// </summary>
/// <param name="table">/表</param>
public void Insert(DataTable table)
{
Word.Table WTable;
int NumRows,NumColumns;
object missing = Type.Missing;
NumRows = table.Rows.Count;
NumColumns = table.Columns.Count;
WTable = MyDoc.Tables.Add(MyWordApp.Selection.Range,NumRows,NumColumns,ref mi
ssing,ref missing);
for (int i = 1; i <= table.Rows.Count; i++)
{
for (int j = 1; j <= table.Columns.Count; j++)
{
WTable.Cell(i,j).Range.Text = table.Rows[i-1].ItemArray[j-1].ToString();
}
}
}
#endregion
#region 读取
/// <summary>
/// 读取一段
/// </summary>
/// <param name="ParaCount">/第几段</param>
/// <param name="ReadOnly">/是否只读</param>
/// <returns></returns>
public string Read(int ParaCount,bool ReadOnly)
{
string txt = Convert.ToString(MyDoc.Paragraphs[ParaCount].Range.Text);
return txt;
}
/// <summary>
/// 读取指定长度
/// </summary>
/// <param name="Start">/开始位置</param>
/// <param name="End">/结束位置</param>
/// <returns></returns>
public string Read(int Start,int End)
{
object start = Start;
object end = End;
string txt = "";
txt = Convert.ToString(MyDoc.Range(ref start,ref end).Text);
return txt;
}
#endregion
#region 表相关操作
/// <summary>
/// 读取表的位置
/// </summary>
/// <param name="TableIndex">/哪个表</param>
public Word.Range TableLocation(int TableIndex)
{
MyRange = MyDoc.Tables[TableIndex].Range;
return MyRange;
}
/// <summary>
/// 当前文档内有几个表
/// </summary>
/// <returns></returns>
public int TableCount()
{
return MyDoc.Tables.Count;
}
/// <summary>
/// 返回一个表的内容
/// </summary>
/// <param name="TableIndex">/哪个表</param>
/// <returns></returns>
public Word.Table Read(int TableIndex)
{
return MyDoc.Tables[TableIndex];
}
#endregion
#region 得到当前文件信息
public int[] GetFileInfo(string FileName)
{
int[] FileInfo = new Int32[6];//章节数,包含空行了章节数,行数,页数,段落数,
字数;
OpenFile(FileName,true);
object IncludeFootnotesAndEndnotes = false;
FileInfo[0] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticCharacters,
ref IncludeFootnotesAndEndnotes);
FileInfo[1] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticCharactersW
ithSpaces,ref IncludeFootnotesAndEndnotes);
FileInfo[2] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticLines,ref I
ncludeFootnotesAndEndnotes);
FileInfo[3] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticPages,ref I
ncludeFootnotesAndEndnotes);
FileInfo[4] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticParagraphs,
ref IncludeFootnotesAndEndnotes);
FileInfo[5] = MyDoc.ComputeStatistics(Word.WdStatistic.wdStatisticWords,ref I
ncludeFootnotesAndEndnotes);
return FileInfo;
}
#endregion
#region 段落操作
/// <summary>
/// 读取段落的位置
/// </summary>
/// <param name="ParaIndex">/哪个段落</param>
/// <returns></returns>
public Word.Range ParagraphLocation(int ParaIndex)
{
return MyDoc.Paragraphs[ParaIndex].Range;
}
/// <summary>
/// 当前文档有多少个段落
/// </summary>
/// <returns></returns>
public int ParagraphCount()
{
return MyDoc.Paragraphs.Count;
}
/// <summary>
/// 读取指定段落内容
/// </summary>
/// <param name="ParaIndex"></param>
/// <returns></returns>
public string ParagraphText(int ParaIndex)
{
return MyDoc.Paragraphs[ParaIndex].Range.Text;
}
/// <summary>
/// 得到当前段落的字体属性
/// </summary>
/// <param name="ParaIndex"></param>
/// <returns></returns>
public Word.Font ParagraphFont(int ParaIndex)
{
return MyDoc.Paragraphs[ParaIndex].Range.Font;
}
#endregion
}
}