开发者社区> 老先生二号> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

C#操作Word/excel文档

简介:
+关注继续查看
首先引入类库,Microsoft.Office.Interop.Word,然后进行编程。代码如下:
首先引入类库,Microsoft.Office.Interop.Word,然后进行编程。代码如下: 

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Text; 
using System.Windows.Forms; 
using Microsoft.Office.Interop.Word; 

namespace WordTest 

public partial class Form1 : Form 

object strFileName; 
Object Nothing; 
Microsoft.Office.Interop.Word.Application myWordApp = new Microsoft.Office.Interop.Word.ApplicationClass(); 
Document myWordDoc; 
string strContent = ""; 

public Form1() 

InitializeComponent(); 


private void button1_Click(object sender, EventArgs e) 

createWord(); 
//openWord(); 


private void createWord() 

strFileName = System.Windows.Forms.Application.StartupPath + "test.doc"; 
if (System.IO.File.Exists((string)strFileName)) 
System.IO.File.Delete((string)strFileName); 
Object Nothing = System.Reflection.Missing.Value; 
myWordDoc = myWordApp.Documents.Add(ref Nothing, ref Nothing, ref Nothing, ref Nothing); 

#region 将数据库中读取得数据写入到word文件中 

strContent = "你好nnr"; 
myWordDoc.Paragraphs.Last.Range.Text = strContent; 

strContent = "这是测试程序"; 
myWordDoc.Paragraphs.Last.Range.Text = strContent; 


#endregion 

//将WordDoc文档对象的内容保存为DOC文档 
myWordDoc.SaveAs(ref strFileName, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing, ref Nothing); 
//关闭WordDoc文档对象 
myWordDoc.Close(ref Nothing, ref Nothing, ref Nothing); 
//关闭WordApp组件对象 
myWordApp.Quit(ref Nothing, ref Nothing, ref Nothing); 

this.richTextBox1.Text = strFileName + "rn" + "创建成功"; 


private void openWord() 

fontDialog1.ShowDialog(); 
System.Drawing.Font font = fontDialog1.Font; 
object filepath = "D:asp.docx"; 
object oMissing = System.Reflection.Missing.Value; 
myWordDoc = myWordApp.Documents.Open(ref filepath, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing, 
ref oMissing, ref oMissing, ref oMissing, ref oMissing, ref oMissing); 
myWordDoc.Content.Font.Size = font.Size; 
myWordDoc.Content.Font.Name = font.Name; 
myWordDoc.Save(); 
richTextBox1.Text = myWordDoc.Content.Text; 


myWordDoc.Close(ref oMissing, ref oMissing, ref oMissing); 
myWordApp.Quit(ref oMissing, ref oMissing, ref oMissing); 



======================================
另外当然还需要引用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

调用上面静态方法,打开目标文件并且把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 S***eFP2toExcel(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;
}


这种方法是相当有效的。


下附: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# Asp.net

本文转自快乐就好博客园博客,原文链接:http://www.cnblogs.com/happyday56/archive/2007/11/02/946867.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#操作Excel文件三种方式
C#操作Excel文件三种方式
126 0
C#操作Excel文件三种方式
C#操作Excel文件三种方式
132 0
C# 操作Excel数据透视表
一、概述 数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等,可动态地改变透视表版面布置,也可以重新安排行号、列标和页字段。当改变版面布置时,数据透视表也会按照新的布置来进行更新,可以说是一个功能强大的数据分析工具。
1442 0
Excel文件转成MD格式
常规用例,文件转换 Mac OS 版本请在命令行下直接使用exceltk,不用带exe后缀,MacOS的安装包自动配置好环境变量 整个表格 exceltk.
1221 0
C#对word、excel、pdf等格式文件的操作总结
一、word 这是我以前工作时写过的一个业务逻辑处理类,里面有不少文件操作的方法,这里主要关注一下C#对word的操作。
870 0
C#+EXCEL
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.
752 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载