VisualC#操作Excel详解Word版Word格式.docx
- 文档编号:5349332
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:29
- 大小:22.47KB
VisualC#操作Excel详解Word版Word格式.docx
《VisualC#操作Excel详解Word版Word格式.docx》由会员分享,可在线阅读,更多相关《VisualC#操作Excel详解Word版Word格式.docx(29页珍藏版)》请在冰点文库上搜索。
ExtendedProperties=Excel8.0"
OleDbConnectionmyConn=newOleDbConnection(strCon)
stringstrCom="
SELECT*FROM[Sheet1$]"
myConn.Open()
file:
//打开数据链接,得到一个数据集
OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn)
//创建一个DataSet对象myDataSet=newDataSet()
//得到自己的DataSet对象
myCommand.Fill(myDataSet,"
[Sheet1$]"
)
-1-
//关闭此数据链接
myConn.Close()
怎么样读取Excel表格中的数据其实和读取数据库中的数据没有什么实质上的区别。
注释:
这里读取的是C盘根目录下的"
Sample.xls"
文件。
(2)用DataGrid来显示得到的数据集
在得到DataSet对象后,只需要通过下列二行代码,就可以把数据集用DataGrid显示出来了:
DataGrid1.DataMember="
DataGrid1.DataSource=myDataSet
(3)用VisualC#读取Excel表格
并用DataGrid显示出来的程序代码(Read.cs)和程序运行的界面掌握了上面二点,水到渠成就可以得到以下代码:
usingSystem
usingSystem.Drawing
usingSystem.Collections
usingSystem.ComponentModel
usingSystem.Windows.Forms
usingSystem.Data
usingSystem.Data.OleDb
publicclassForm1:
Form
{
privateButtonbutton1
privateSystem.Data.DataSetmyDataSetprivateDataGridDataGrid1
privateSystem.ComponentModel.Containercomponents=null
publicForm1()
InitializeComponent()//初始化窗体中的各个组件
GetConnect()//打开数据链接,得到数据集
}
//清除程序中使用过的资源
protectedoverridevoidDispose(booldisposing)
if(disposing)
if(components!
=null)
{components.Dispose()}
base.Dispose(disposing)
privatevoidGetConnect()
ExtendedProperties=Excel8.0"
OleDbConnectionmyConn=newOleDbConnection(strCon)stringstrCom="
SELECT*FROM[Sheet1$]"
OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn)file:
privatevoidInitializeComponent()
DataGrid1=newDataGrid()button1=newButton()SuspendLayout()
DataGrid1.Name="
DataGrid1"
;
DataGrid1.Size=newSystem.Drawing.Size(400,200)
button1.Location=newSystem.Drawing.Point(124,240)
button1.Name="
button1"
button1.TabIndex=1
button1.Text="
读取数据"
button1.Size=newSystem.Drawing.Size(84,24)
button1.Click+=newSystem.EventHandler(this.button1_Click)
this.AutoScaleBaseSize=newSystem.Drawing.Size(6,14)
this.ClientSize=newSystem.Drawing.Size(400,280)
this.Controls.Add(button1)this.Controls.Add(DataGrid1)
this.Name="
Form1"
this.Text="
读取Excle表格中的数据,并用DataGrid显示出来!
"
this.ResumeLayout(false)
privatevoidbutton1_Click(objectsender,System.EventArgse)
DataGrid1.DataMember="
staticvoidMain()
{Application.Run(newForm1())}
(4)总结
以上只是读取了Excel表格中"
Sheet1"
中的数据,对于其他"
Sheet"
中的内容,可以参照读取"
中的程序,只作一点修改就可以了,譬如要读取"
Sheet2"
中的内容,只需要把"
Read.cs"
程序中的"
Sheet1$"
改成"
Sheet2$"
就可以了。
三.VisualC#调用Excel表格,并在Excel表格中存储数据
在VisualC#中调用Excel表格,并不像读取Excel表格中的数据那么容易了,因为在VisualC#中调用Excel表格要使用到Excel的COM组件。
如果你安装Office套件在"
C"
盘,那么在"
C:
\ProgramFiles\MicrosoftOffice\Office"
可以找到这个COM组件"
EXCEL9.OLB"
在《VisualC#如何使用ActiveX组件》一文中,这些COM组件都是非受管代码的,要在VisualC#中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的类库。
所以在用VisualC#调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。
(1)非受管代码COM组件转换成受管代码的类库
首先把COM组件"
拷贝到C盘的根目录下,然后输入下列命令:
tlbimpexcel9.olb
这样在C盘的根目录下面就产生了三个DLL文件:
Excel.dll"
、"
Office.dll"
VBIDE.dll"
。
在产生了上面的三个文件后,这种转换就成功完成了。
在下面的程序中,就可以利用这转换好的三个类库编写和Excel表格相关的各种操作了。
1.在安装的程序中或许找不到excel9.olb,可以利用下面的命令格式获取dll文件
Tlbimpexecel.exe
也可以生成文件"
"
2.也可以使用VisualStudio.net2003或其以上版本添加引用找到Excel.exe文件,会自动转化为excel.dll文件,然后在程序中添加包含即可
例如:
usingExcel;
请根据包的不同情况添加。
(2)VisualC#打开Excel表格:
在"
中定义了一个命名空间"
Excel"
在差命名空间中封装了一个类"
Application"
这个类和启动Excel表格有非常重要的关系,在VisualC#中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:
Excel.Applicationexcel=newExcel.ApplicationClass()
excel.Application.Workbooks.Add(true)
excel.Visible=true
但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。
(3)往Excel表格中输入数据:
在命名空间"
中,还定义了一个类"
Cell"
这个类所代表的就是Excel表格中的一个下单元。
通过给差"
赋值,从而实现往Excel表格中输入相应的数据,下列代码功能是打开Excel表格,并且往表格输入一些数据。
Excel.Applicationexcel=newExcel.ApplicationClass()
excel.Cells[1,1]="
第一行第一列"
excel.Cells[1,2]="
第一行第二列"
excel.Cells[2,1]="
第二行第一列"
excel.Cells[2,2]="
第二行第二列"
excel.Cells[3,1]="
第三行第一列"
excel.Cells[3,2]="
第三行第二列"
(4)VisualC#调用Excel表格,并在Excel表格中存储数据的程序代码(Excel.cs)
了解了上面的这些知识,得到完成上述功能的程序代码就显得比较容易了,具体如下:
usingSystem.Data.SqlClient
//初始化窗体中的各个组件
InitializeComponent()
//清除程序中使用的各个资源
base.Dispose(disposing)
button1=newButton()SuspendLayout()
button1.Location=newSystem.Drawing.Point(32,72)
button1.Size=newSystem.Drawing.Size(100,30)
button1.TabIndex=0
调用Excel文件!
button1.Click+=newSystem.EventHandler(button1_Click)
AutoScaleBaseSize=newSystem.Drawing.Size(5,13)
this.ClientSize=newSystem.Drawing.Size(292,273)
this.Controls.Add(button1)this.Name="
如何用VisualC#调用Excel表格!
Excel.Applicationexcel=newExcel.Application()
(5)编译源程序和程序运行界面:
在经过了下列命令编译后:
Csc.exe/r:
system.dll/r:
system.windows.forms.dll/r:
system.drawing.dll/r:
excel.dll/r:
office.dll/r:
vbide.dllexcel.cs就可以得到"
Excel.exe"
运行后界面如下
四.VisualC#处理Office套件中的其他成员程序
本文虽然只介绍了VisualC#在处理Excel表格中经常遇到的一些问题的解决方法,但其实对Office套件的其他成员也有很强的借鉴意义,譬如VisualC#来处理Word文档,在调用Word文档的时候,必须先完成COM组件从非受管代码到受管代码的转换,Word的COM组件位"
MSWORD9.OLB"
经过转换后也会产生三个DLL文件,但分别是"
Word.dll"
其实在VisualC#中调用Word,也非常容易。
只需要把调用Excel表格中的代码换成调用Word的代码就可以了,具体如下:
Word.Applicationword=newWord.Application()
word.Application.Visible=true
不信你试一下,看看是否达到你的要求。
对于针对Word的其他的操作,总体来说和对Excel表格的操作相类似。
由于针对Word只是一个文档,程序对Word进行的操作是比较少的,所以就不一一介绍了。
五、总结
本文介绍VisualC#来处理Excel表格的几种最常遇到的情况,虽然针对的只是Excel表格,但对其他Office套件中的成员也具有十分的借鉴意义。
程序示例及常见问题:
前提:
首先要把Excel加入到引用,加入方法见:
非受管代码COM组件转换成受管代码的类库示例1:
读取一个模板excel文件另存为另外一个excel文件
usingSystem;
namespaceExcelOperator.ClassExcel
publicclassExample1
privateDateTimebeforeTime;
//Excel启动之前时间
privateDateTimeafterTime;
//Excel启动之后时间
privatestringOriginalPath;
privatestringCurrentPath;
publicExample2(stringCurrentPath,stringOriginalPath)
this.OriginalPath=OriginalPath;
this.CurrentPath=CurrentPath;
publicvoidOperatorExcel()
//GC.Collect();
Excel.Applicationexcel;
//声明excel对象
beforeTime=DateTime.Now;
//获取excel开始启动时间
excel=newExcel.ApplicationClass();
//创建对象实例,这时在系统进程中会多出一个excel进程
afterTime=DateTime.Now;
//获取excel启动结束的时间
try
objectmissing=System.Reflection.Missing.Value;
//Missing用于调用带默认参数方法。
objectreadOnly=true;
excel.Visible=false;
//是否显示excel文档
//OpenOriginalExcelFile
excel.Application.Workbooks.Open(OriginalPath,missing,readOnly,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);
Excel.WorkbookmyBook=excel.Workbooks[1];
//Workbooks从1开始计数的
Excel.WorksheetmySheet=(Excel.Worksheet)myBook.Worksheets[3];
//从1开始计数的
Excel.Ranger=mySheet.get_Range(mySheet.Cells[1,17],mySheet.Cells[65231,17]);
//获取矩形选择框
r.NumberFormatLocal=XlColumnDataType.xlTextFormat//设置该矩形框的文本格式
//SaveAsOriginalExcelFileToCurrentPath
mySheet.SaveAs(CurrentPath,missing,missing,missing,missing,missing,missing,missing,missing,missing);
//释放Excel对象,但在AWeb程序中只有转向另一个页面的时候进程才结束
//可以考虑使用KillExcelProcess()杀掉进程
//ReleaseComObject方法递减运行库可调用包装的引用计数。
详细信息见MSDN
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);
System.Runtime.InteropServices.Marshal.ReleaseComObject(r);
myBook.Close(null,null,null);
excel.Workbooks.Close();
r=null;
mySheet=null;
myBook=n
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VisualC 操作 Excel 详解 Word