`
isiqi
  • 浏览: 16702370 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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

}
}

分享到:
评论

相关推荐

    C#操作Word——C#向Word文档中写入文字

    C#操作Word文档,实现文字写入 本实例主要讲述了使用C#操作Word文档,实现文字写入功能。通过使用Word文档中的Range属性,能够轻松地向Word文档中添加文本内容。本实例中,首先创建了一个Windows窗体应用程序,然后...

    C#操作word文档(多种方法)

    以上就是C#操作Word文档的一些核心知识点和常见操作,通过这些方法可以实现对Word文档的读取、编辑和创建。在实际开发中,根据具体需求,还可以结合其他高级特性,如模板应用、邮件合并、宏执行等。

    C#操作word模板

    ### C#操作Word书签模板知识点详解 #### 一、制作Word书签模板 1. **新建文档**:首先创建一个新的Word文档,并设置好需要的内容。对于需要循环展示的部分(如列表或表格),建议将其放入表格中进行管理,因为表格...

    C#操作word

    C#操作Word C#操作Word是指使用C#语言来操作Microsoft Word文档的过程。通过使用C#语言,可以实现对Word文档的读取、写入、编辑、打印等操作。本文将对C#操作Word的基本概念、实现方法、常见问题等进行详细的介绍。...

    c#操作word进行批量查找和替换

    综上所述,通过C#操作Word进行批量查找和替换是一个涉及文件操作、COM互操作以及Word API运用的过程。正确理解和运用这些知识点,可以创建一个高效且灵活的文档处理工具。在实际应用中,还可以根据需要扩展功能,如...

    C#操作word,如何进行查找和替换

    ### C#操作Word文档进行查找和替换的知识点详解 #### 一、引入必要的命名空间与组件 为了在C#中操作Word文档,首先需要引入必要的命名空间和引用Microsoft Word对象库。具体步骤如下: 1. **引入命名空间**: ``...

    C#操作word里面的书签

    以上就是使用C#操作Word中的书签并插入表格的基本流程和关键代码。这个功能在自动化报告生成、文档模板填充等方面非常实用,可以极大地提高工作效率。在实际开发中,还需要考虑错误处理、兼容性问题以及性能优化等...

    C# 操作 Word 代码大全

    C#操作Word.doc C#操作Word表格.doc C#操作WORD辅助类.txt c#操作word模板插入文字、图片及表格.doc C#操作Word在Word文档中插入图片.docx C#用word模板做文档.doc 收集的C#操作Word的各种代码。直接复制粘贴到程序...

    C#操作Word文档(根据模板生成文档、替换内容、插入表格等)

    以上就是使用C#操作Word文档的基本步骤,包括根据模板生成文档、替换内容和插入表格。通过深入理解和实践,开发者可以创建出高效、灵活的文档自动化解决方案。在实际项目中,务必注意异常处理和资源管理,以确保程序...

    C#操作word文档 C#实现Word中表格信息读取

    根据提供的文件信息,我们可以归纳出两个主要的知识点:一是如何使用C#操作Word文档并插入图片;二是如何利用C#批量替换Word文档中的书签文本。下面将对这两个知识点进行详细解析。 ### 一、使用C#操作Word文档并...

    C#操作Word文件

    ### C#操作Word文件知识点详解 #### 一、概述 在C#中操作Word文件是一项常见但非常实用的技术。这不仅适用于自动化办公场景,还能帮助开发者实现数据导出、报告生成等多种需求。本文将详细介绍如何使用C#进行Word...

    c#操作word功能类

    c#操作word详细类。实用c#操作word的一个通用类,功能全面。

    C#操作word,签入书签,图表,表格

    本篇文章将深入探讨如何利用C#操作Word文档,包括插入书签、创建和编辑图表以及操作表格。这些功能对于自动化报告生成、文档处理和数据整合等场景非常有用。 首先,让我们了解一下如何在C#中操作Word文档。这通常...

    c# 操作word

    c# 操作word,包含word文档的打开,修改,删除,添加文本等

    C# 操作Word

    非常好用的一个C#操作word的类库。能在word文档中任意位子写文字以及段落和表格(带线和不带线以及虚线)、图片、页眉页脚。word能操作的,这个类库基本都可以完成。下载直接使用。

    C# 操作word

    在IT行业中,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用和.NET框架相关项目时。本主题聚焦于如何使用C#来操作...通过学习和理解这些代码,你将能够熟练地运用C#操作Word,实现文档自动化修改的需求。

    c#操作word的编辑控件.rarc#操作word的编辑控件.rar

    在IT领域,C#是一种广泛使用的编程语言,尤其...综上所述,C#操作Word的编辑控件涉及多个层面,从基本的文档创建和文本编辑到更复杂的格式设置和自动化流程。选择合适的方法取决于具体需求,如性能、兼容性和开发效率。

Global site tag (gtag.js) - Google Analytics