`

C#实现对Word文件读写

阅读更多

C#实现对Word文件读写

手头上的一个项目报表相对比较简单,所以报表打印采用VBA引擎,通过定制Word模版,然后根据模版需要填充数据,然后OK,打印即可。

  实现方法:首先需要引用VBA组建,我用的是Office2003 Professional,Dll版本号为Microsoft Word11.0

  另外当然还需要引用Interop.Word.Dll.

  代码如下:

///#region 打开Word文档,并且返回对象wDoc,wDoc
///
/// 打开Word文档,并且返回对象wDoc,wDoc
///
/// 完整Word文件路径+名称
/// 返回的Word.Document wDoc对象
/// 返回的Word.Application对象
public static void CreateWordDocument(string FileName,ref Word.Document wDoc,ref Word.Application WApp)
{
if(FileName == "") return;
Word.Document thisDocument = null;
Word.FormFields formFields = null;
Word.Application thisApplication = new Word.ApplicationClass();
thisApplication.Visible = true;
thisApplication.Caption = "";
thisApplication.Options.CheckSpellingAsYouType = false;
thisApplication.Options.CheckGrammarAsYouType = false;

Object filename = FileName;
Object ConfirmConversions = false;
Object ReadOnly = true;
Object AddToRecentFiles = false;

Object PasswordDocument = System.Type.Missing;
Object PasswordTemplate = System.Type.Missing;
Object Revert = System.Type.Missing;
Object WritePasswordDocument = System.Type.Missing;
Object WritePasswordTemplate = System.Type.Missing;
Object Format = System.Type.Missing;
Object Encoding = System.Type.Missing;
Object Visible = System.Type.Missing;
Object OpenAndRepair = System.Type.Missing;
Object DocumentDirection = System.Type.Missing;
Object NoEncodingDialog = System.Type.Missing;
Object XMLTransform = System.Type.Missing;

try
{
Word.Document wordDoc =
thisApplication.Documents.Open(ref filename, ref ConfirmConversions,
ref ReadOnly, ref AddToRecentFiles, ref PasswordDocument, ref PasswordTemplate,
ref Revert,ref WritePasswordDocument, ref WritePasswordTemplate, ref Format,
ref Encoding, ref Visible, ref OpenAndRepair, ref DocumentDirection,
ref NoEncodingDialog, ref XMLTransform );

thisDocument = wordDoc;
wDoc = wordDoc;
WApp = thisApplication;
formFields = wordDoc.FormFields;
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}

}
#endregion

http://ike.126.com
调用上面静态方法,打开目标文件并且把DataGrid中数据填充到对应Word标签中去

///#region Word填充数据(For Example)
///
/// Word填充数据
///
private void WordLoadData()
{
Word.Document wDoc=null;
Word.Application wApp=null;
sysFun.CreateWordDocument("E:\\监测报告(new).dot",ref wDoc,ref wApp);

//对标签"C"进行填充
object bkmC="C";
if(wApp.ActiveDocument.Bookmarks.Exists("C") == true)
{
wApp.ActiveDocument.Bookmarks.get_Item
(ref bkmC).Select();
}
wApp.Selection.TypeText(this.txt1.Text);
object bkmG = "TWaterTable3";
object unit;
object count; //移动数
object extend;


extend = Word.WdMovementType.wdExtend;
unit = Word.WdUnits.wdCell;
//把DataGrid中数据填充到标签TWaterTable3上
if(wApp.ActiveDocument.Bookmarks.Exists("TWaterTable3") == true)
{
wApp.ActiveDocument.Bookmarks.get_Item
(ref bkmG).Select();

for(int i=0;i {
if(i==0)
{
count=1;
}
else
{
count=0;
}
//需填充5列数据
wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[0].Text);
count=1;

wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[1].Text);

wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[2].Text);

wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[3].Text);

wApp.Selection.Move(ref unit,ref count);
wApp.Selection.TypeText(gridEX1.GetRow(i).Cells[4].Text);
//换行
wApp.Selection.MoveRight(ref unit,ref count,ref extend);
}
}
}
#endregion


  然后就OK了,在对标签表控制要注意列循环和换行.


C#操作Excel(导入导出)


  有很多朋友说需要C#导出到Excel的代码,现共享给大家


///
/// 读取Excel文档
///
/// 文件名称
/// 返回一个数据集
public DataSet ExcelToDS(string Path)
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
DataSet ds = null;
strExcel="select * from [sheet1$]";
myCommand = new OleDbDataAdapter(strExcel, strConn);
ds = new DataSet();
myCommand.Fill(ds,"table1");
return ds;
}


///
/// 写入Excel文档
///
/// 文件名称
public bool SaveFP2toExcel(string Path)
{
try
{
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +"Data Source="+ Path +";"+"Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
System.Data.OleDb.OleDbCommand cmd=new OleDbCommand ();
cmd.Connection =conn;
//cmd.CommandText ="UPDATE [sheet1$] SET 姓名='2005-01-01' WHERE 工号='日期'";
//cmd.ExecuteNonQuery ();
for(int i=0;i {
if(fp2.Sheets [0].Cells[i,0].Text!="")
{
cmd.CommandText ="INSERT INTO [sheet1$] (工号,姓名,部门,职务,日期,时间) VALUES('"+fp2.Sheets [0].Cells[i,0].Text+ "','"+
fp2.Sheets [0].Cells[i,1].Text+"','"+fp2.Sheets [0].Cells[i,2].Text+"','"+fp2.Sheets [0].Cells[i,3].Text+
"','"+fp2.Sheets [0].Cells[i,4].Text+"','"+fp2.Sheets [0].Cells[i,5].Text+"')";
cmd.ExecuteNonQuery ();
}
}
conn.Close ();
return true;
}
catch(System.Data.OleDb.OleDbException ex)
{
System.Diagnostics.Debug.WriteLine ("写入Excel发生错误:"+ex.Message );
}
return false;
}


  这种方法是相当有效的。
http://ike.126.com

  下附:VB.NET版实现word打开与关闭,有兴趣的朋友可以研究一下

VB.NET实现word打开与关闭


Imports Word

'打开

Dim mWordapp As Word.Application 'word 应用程序

Dim mobjDoc As Word.Document 'word 文档

Dim fullFileName as string '文件路径

mWordapp = CreateObject("Word.Application")

mobjDoc = mWordapp.Documents.Add(FullFileName)

'关闭

Dim missing As Object = System.Reflection.Missing.Value

mWordapp.Application.Quit()

If Not mobjDoc Is Nothing Then

'垃圾回收

System.Runtime.InteropServices.Marshal.ReleaseComObject(mobjDoc)

mobjDoc = Nothing

End If

If Not mWordapp Is Nothing Then

System.Runtime.InteropServices.Marshal.ReleaseComObject(mWordapp)

mWordapp = Nothing

End If

'真正释放word进程

GC.Collect()

分享到:
评论

相关推荐

    C#文件读写之word读写

    C#文件读写之word读写 手头上的一个项目报表相对比较简单,所以报表打印采用VBA引擎,通过定制Word模版,然后根据模版需要填充数据,然后OK,打印即可。 实现方法:首先需要引用VBA组建,我用的是Office2003 ...

    c#读写word文件

    c#对word文件的读写对于初学者来说是一个头疼的问题,希望本资源能给你带来一线曙光……努力吧……哥们……你是最强的……

    C#读写Excel和Word文件

    实现C#读写Excel和Word文件基本操作,可以读写Word文件和读出Excel中的数据并实现Excel与数据库的导入与导出

    C# word编辑类,可以读写word

    C# 可以读写word,可以插入表格,用标签写入word文件 1. 通过模板创建新文档 2. 保存新文件 3、 在书签处插入值 4插入表格,bookmark书签 5、修改word样式

    C#读写word文件

    用vs2008 C#读写word文件 先在word文件里加上标签,才能写入

    word文档合并C#实现

    本程序演示C#如何完成word文档合并。 在此基础上演示如何在word文档中进行基本的读写的操作。

    C#对Excel的读写操作

    系统中也实现了一个Export方法,来将统计结果从ListView导出到Excel文件。 Excel的读取方法网上有很多例子,写入方法不对。此代码可以参考参考。 对于Excel、word等office组件的操作,可以借鉴以前的VBA。 另外,...

    C# WPF根据word模板生成word文档

    C# WPF根据word模板生成word文档,包括Microsoft.Office.Core.dll,Microsoft.Office.Interop.Word.dll文件

    C#读取word文件Excel文件PDF文件Txt文件

    可以完整的读取word文件Excel文件PDF文件Txt文件,以文本的形式读出来,简单易懂

    C#读写INI文件(Word)

    INI文件是文本文件,由若干节(section)组成,在每个带括号的标题下面,是若干个关键词(key)及其对应的值(Value)

    c#读写PDF文件sql

    c# 读写PDF文件 sql word

    Word 2003/2007读写控件C#示例源代码

    SharpWord for .Net是一款功能强大,可自由读写编辑Microsoft Word 2003/2007文件类库,具有丰富的Word文档内容编辑及导入/导出功能。简单、方便、易用,可以大大提高工作效率。 ★编辑功能:等同于Word内容编辑功能...

    NPOI可以Word或Excel文档进行读写操作.rar

    NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作。 压缩内包含文件有: ICSharpCode.SharpZipLib.dll NPOI.dll NPOI.OOXML.dll NPOI.OpenXml4Net.dll NPOI.OpenXmlFormats.dll

    c#用aspose.word读取word文件内容,并显示图片

    c#用aspose.word读取word文件内容,并显示图片 c#用aspose.word读取word文件内容,并显示图片

    Aspose.Words v18.7 将word转pdf(无需安装office),C#示例源码,亲测可用

    Aspose.Words是一个无图形用户界面的.NET Word文档的报告控件,它可使.NET的应用在没有安装Microsoft Words的情况下读写Word文档,并可以将WORD文档转换为PDF文档(无需安装office),此版本亲测转换50页的WORD文档...

    C#创建.xlsx文件.rar

    C#利用EPPlus创建.xlsx文件 1、内部包含word文档,详细介绍如何创建Excel文件及其内容读写代码 2、内部包涵EPPlus.dll文件 3、亲测可用,仅用来帮助那些迷路的人

    开源的Word开发库,含c++、c#、java、Python源码

    无需安装office,开源的Docx开发库,对word进行读写编辑等功能。

    C#读写excel文件NPOI库.7z

    NPOI是开源的POI项目的.NET版,可以用来读写Excel,Word,PPT等文件。在处理Excel文件上,NPOI 可以同时兼容 xls 和 xlsx。官网提供了一份 Examples,给出了很多应用场景的例子,打包好的二进制文件类库,也仅有几MB...

    FreeSpire操作Word读写.7z

    使用Spire提供的免费版,FreeSpire.Doc在电脑不安装Office组件的情况下使用C#操作Word文件.并且附带效果图源代码文件。word中文本查找替换以及带链接图片添加等。

    C# 第2章 文件管理

    第2章 文件管理 ...实例29 如何操作WORD文件 实例30 如何操作EXCEL文件 实例31 如何播放MP3文件 实例32 如何播放VCD文件 实例33 如何播放DVD文件 实例34 如何播放Flash文件 实例35 如何播放RealPlayer文件

Global site tag (gtag.js) - Google Analytics