c#操作WORD

 版本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

 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值