




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Good is good, but better carries it.精益求精,善益求善。C语言操作Excel-VisualC的Excel编程前言Excel是微软公司办公自动化套件中的一个软件,他主要是用来处理电子表格。Excel以其功能强大,界面友好等受到了许多用户的欢迎。在办公的时候,正是由于Excel的这么多的优点,许多重要的数据,往往以Excel电子表格的形式存储起来。这样就给程序员带来了一个问题,虽然Excel功能比较强大,但毕竟不是数据库,在程序中处理数据库中的数据比其处理Excel表格中的数据容易许多。那么如何用VisualC读取Excel表格中的数据?在以前用Delphi编程
2、的时候,对于不同的用户,他们对于打印的需求是不一样的,如果要使得程序中的打印功能适用于每一个用户,可以想象程序设计是十分复杂的。这时想到Excel,由于Excel表格的功能强大,又由于几乎每一台机器都安装了它,如果把程序处理的结果放到Excel表格中,这样每一个用户就可以根据自己的需要在Excel中定制自己的打印。这样不仅使得程序设计简单,而且又满足了诸多用户的要求,更加实用了。那么用VisualC如何调用Excel,如何又把数据存放到Excel表格中?本文就来探讨一下上述问题的解决办法。一程序设计及运行环境(1).微软视窗2000服务器版(2).NetFrameworkSDKBeta2(3)
3、.MicrosoftDataAccessComponent2.6以上版本(MDAC2.6)(4).Office2000套件二VisualC读取Excel表格中的数据:本节将通过一个程序来介绍VisualC读取Excel表格中的数据,并把数据以DataGrid的形式显示出来。(1).如何读取数据其实读取Excel表格中的数据和读取数据库中的数据是非常类似的,因为在某种程度上Excel表格可以看成是一张一张的数据表。其二者的主要区别在于所使用的数据引擎不一样。在本文的程序中,通过下列代码实现读取Excel表格数据,具体如下:/创建一个数据链接stringstrCon=Provider=Micros
4、oft.Jet.OLEDB.4.0;DataSource=c:sample.xls;ExtendedProperties=Excel8.0;OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom=SELECT*FROMSheet1$;myConn.Open();file:/打开数据链接,得到一个数据集OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);file:/创建一个DataSet对象myDataSet=newDataSet();file:/得到自己的D
5、ataSet对象myCommand.Fill(myDataSet,Sheet1$);file:/关闭此数据链接myConn.Close();怎么样读取Excel表格中的数据其实和读取数据库中的数据没有什么实质上的区别。注释:这里读取的是C盘根目录下的Sample.xls文件。(2).用DataGrid来显示得到的数据集在得到DataSet对象后,只需要通过下列二行代码,就可以把数据集用DataGrid显示出来了:DataGrid1.DataMember=Sheet1$;DataGrid1.DataSource=myDataSet;(3).用VisualC读取Excel表格,并用DataGrid
6、显示出来的程序代码(Read.cs)和程序运行的界面掌握了上面二点,水到渠成就可以得到以下代码:usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;usingSystem.Data.OleDb;publicclassForm1:FormprivateButtonbutton1;privateSystem.Data.DataSetmyDataSet;privateDataGridDataGrid1;
7、privateSystem.ComponentModel.Containercomponents=null;publicForm1()file:/初始化窗体中的各个组件InitializeComponent();file:/打开数据链接,得到数据集GetConnect();file:/清除程序中使用过的资源protectedoverridevoidDispose(booldisposing)if(disposing)if(components!=null)components.Dispose();base.Dispose(disposing);privatevoidGetConnect()fi
8、le:/创建一个数据链接stringstrCon=Provider=Microsoft.Jet.OLEDB.4.0;DataSource=c:sample.xls;ExtendedProperties=Excel8.0;OleDbConnectionmyConn=newOleDbConnection(strCon);stringstrCom=SELECT*FROMSheet1$;myConn.Open();file:/打开数据链接,得到一个数据集OleDbDataAdaptermyCommand=newOleDbDataAdapter(strCom,myConn);file:/创建一个Data
9、Set对象myDataSet=newDataSet();file:/得到自己的DataSet对象myCommand.Fill(myDataSet,Sheet1$);file:/关闭此数据链接myConn.Close();privatevoidInitializeComponent()DataGrid1=newDataGrid();button1=newButton();SuspendLayout();DataGrid1.Name=DataGrid1;DataGrid1.Size=newSystem.Drawing.Size(400,200);button1.Location=newSystem
10、.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
11、(button1);this.Controls.Add(DataGrid1);this.Name=Form1;this.Text=读取Excle表格中的数据,并用DataGrid显示出来!;this.ResumeLayout(false);privatevoidbutton1_Click(objectsender,System.EventArgse)DataGrid1.DataMember=Sheet1$;DataGrid1.DataSource=myDataSet;staticvoidMain()Application.Run(newForm1();(4).总结以上只是读取了Excel表格中
12、Sheet1中的数据,对于其他Sheet中的内容,可以参照读取Sheet1中的程序,只作一点修改就可以了,譬如要读取Sheet2中的内容,只需要把Read.cs程序中的Sheet1$改成Sheet2$就可以了。三VisualC调用Excel表格,并在Excel表格中存储数据:在VisualC中调用Excel表格,并不像读取Excel表格中的数据那么容易了,因为在VisualC中调用Excel表格要使用到Excel的COM组件。如果你安装Office套件在C盘,那么在C:ProgramFilesMicrosoftOfficeOffice可以找到这个COM组件EXCEL9.OLB,在VisualC
13、如何使用ActiveX组件一文中,这些COM组件都是非受管代码的,要在VisualC中使用这些非受管代码的COM组件,就必须把他们转换成受管代码的类库。所以在用VisualC调用Excel表格之前,必须完成从COM组件的非受管代码到受管代码的类库的转换。(1).非受管代码COM组件转换成受管代码的类库首先把COM组件EXCEL9.OLB拷贝到C盘的根目录下,然后输入下列命令:tlbimpexcel9.olb这样在C盘的根目录下面就产生了三个DLL文件:Excel.dll、Office.dll、VBIDE.dll。在产生了上面的三个文件后,这种转换就成功完成了。在下面的程序中,就可以利用这转换好
14、的三个类库编写和Excel表格相关的各种操作了。注释:1在安装的程序中或许找不到excel9.olb,可以利用下面的命令格式获取dll文件Tlbimpexecel.exe也可以生成文件Excel.dll,VBIDE.dll2也可以使用VisualS2003或其以上版本添加引用找到Excel.exe文件,会自动转化为excel.dll文件,然后在程序中添加包含即可例如:usingExcel;请根据包的不同情况添加(2).VisualC打开Excel表格:在Excel.dll中定义了一个命名空间Excel,在差命名空间中封装了一个类Application,这个类和启动Excel表格有非常重要的关系
15、,在VisualC中,只需要下列三行代码就可以完成打开Excel表格的工作,具体如下:Excel.Applicationexcel=newExcel.ApplicationClass();excel.Application.Workbooks.Add(true);excel.Visible=true;但此时的Excel表格是一个空的表格,没有任何内容,下面就来介绍如何往Excel表格中输入数据。(3).往Excel表格中输入数据:在命名空间Excel中,还定义了一个类Cell,这个类所代表的就是Excel表格中的一个下单元。通过给差Cell赋值,从而实现往Excel表格中输入相应的数据,下列代
16、码功能是打开Excel表格,并且往表格输入一些数据。Excel.Applicationexcel=newExcel.ApplicationClass();excel.Application.Workbooks.Add(true);excel.Cells1,1=第一行第一列;excel.Cells1,2=第一行第二列;excel.Cells2,1=第二行第一列;excel.Cells2,2=第二行第二列;excel.Cells3,1=第三行第一列;excel.Cells3,2=第三行第二列;excel.Visible=true;(4).VisualC调用Excel表格,并在Excel表格中存储数
17、据的程序代码(Excel.cs):了解了上面的这些知识,得到完成上述功能的程序代码就显得比较容易了,具体如下:usingSystem;usingSystem.Drawing;usingSystem.Collections;usingSystem.ComponentModel;usingSystem.Windows.Forms;usingSystem.Data;usingSystem.Data.SqlClient;publicclassForm1:FormprivateButtonbutton1;privateSystem.ComponentModel.Containercomponents=n
18、ull;publicForm1()file:/初始化窗体中的各个组件InitializeComponent();file:/清除程序中使用的各个资源protectedoverridevoidDispose(booldisposing)if(disposing)if(components!=null)components.Dispose();base.Dispose(disposing);privatevoidInitializeComponent()button1=newButton();SuspendLayout();button1.Location=newSystem.Drawing.Po
19、int(32,72);button1.Name=button1;button1.Size=newSystem.Drawing.Size(100,30);button1.TabIndex=0;button1.Text=调用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.N
20、ame=Form1;this.Text=如何用VisualC调用Excel表格!;this.ResumeLayout(false);staticvoidMain()Application.Run(newForm1();privatevoidbutton1_Click(objectsender,System.EventArgse)Excel.Applicationexcel=newExcel.Application();excel.Application.Workbooks.Add(true);excel.Cells1,1=第一行第一列;excel.Cells1,2=第一行第二列;excel.C
21、ells2,1=第二行第一列;excel.Cells2,2=第二行第二列;excel.Cells3,1=第三行第一列;excel.Cells3,2=第三行第二列;excel.Visible=true;(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套件中的其他成员程序:本文虽然只介绍了V
22、isualC在处理Excel表格中经常遇到的一些问题的解决方法,但其实对Office套件的其他成员也有很强的借鉴意义,譬如VisualC来处理Word文档,在调用Word文档的时候,必须先完成COM组件从非受管代码到受管代码的转换,Word的COM组件位MSWORD9.OLB,经过转换后也会产生三个DLL文件,但分别是Word.dll、Office.dll、VBIDE.dll。其实在VisualC中调用Word,也非常容易。只需要把调用Excel表格中的代码换成调用Word的代码就可以了,具体如下:Word.Applicationword=newWord.Application();word.
23、Application.Visible=true;不信你试一下,看看是否达到你的要求。对于针对Word的其他的操作,总体来说和对Excel表格的操作相类似。由于针对Word只是一个文档,程序对Word进行的操作是比较少的,所以就不一一介绍了。五总结:本文介绍VisualC来处理Excel表格的几种最常遇到的情况,虽然针对的只是Excel表格,但对其他Office套件中的成员也具有十分的借鉴意义。程序示例及常见问题:前提:首先要把Excel加入到引用,加入方法见:非受管代码COM组件转换成受管代码的类库示例1:读取一个模板excel文件另存为另外一个excel文件usingSystem;usin
24、gExcel;namespaceExcelOperator.ClassExcel/Example1的摘要说明。/-2006.08.31Peter-/读取一个模板excel文件另存为另外一个excel文件/在做完操作之后立刻结束excel进程/-End-/publicclassExample1privateDateTimebeforeTime;/Excel启动之前时间privateDateTimeafterTime;/Excel启动之后时间privatestringOriginalPath;privatestringCurrentPath;publicExample2(stringCurrent
25、Path,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启动结束的时间tryobj
26、ectmissing=System.Reflection.Missing.Value;/Missing用于调用带默认参数的方法。objectreadOnly=true;excel.Visible=false;/是否显示excel文档/OpenOriginalExcelFileexcel.Application.Workbooks.Open(OriginalPath,missing,readOnly,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing,missing);Ex
27、cel.WorkbookmyBook=excel.Workbooks1;/Workbooks从1开始计数的Excel.WorksheetmySheet=(Excel.Worksheet)myBook.Worksheets3;/从1开始计数的Excel.Ranger=mySheet.get_Range(mySheet.Cells1,17,mySheet.Cells65231,17);/获取矩形选择框r.NumberFormatLocal=XlColumnDataType.xlTextFormat;/设置该矩形框的文本格式/SaveAsOriginalExcelFileToCurrentPathm
28、ySheet.SaveAs(CurrentPath,missing,missing,missing,missing,missing,missing,missing,missing,missing);/释放Excel对象,但在AWeb程序中只有转向另一个页面的时候进程才结束/可以考虑使用KillExcelProcess()杀掉进程/ReleaseComObject方法递减运行库可调用包装的引用计数。详细信息见MSDNSystem.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);System.Runtime.InteropServi
29、ces.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=null;missing=null;readOnly=null;excel.Quit();excel=null;catc
30、hKillExcelProcess();/杀掉进程finally/可以把KillExcelProcess();放在该处从而杀掉Excel的进程privatevoidKillExcelProcess()System.Diagnostics.ProcessmyProcesses;DateTimestartTime;myProcesses=System.Diagnostics.Process.GetProcessesByName(Excel);/得不到Excel进程ID,暂时只能判断进程启动时间foreach(System.Diagnostics.ProcessmyProcessinmyProces
31、ses)startTime=myProcess.StartTime;if(startTimebeforeTime&startTimeafterTime)myProcess.Kill();示例2:创建一个空文档,朝某一单元格写入值,并保存该excel文档usingSystem;usingExcel;namespaceExcelOperator.ClassExcel/Example1的摘要说明。/-2006.08.31Peter-/创建一个空文档,朝某一单元格写入值,并保存该excel文档/做完操作之后立刻关闭excel进程/-End-/publicclassExample2privateDate
32、TimebeforeTime;/Excel启动之前时间privateDateTimeafterTime;/Excel启动之后时间privatestringpath;publicExample2(stringpath)this.path=path;publicvoidOperatorExcel()/GC.Collect();Excel.Applicationexcel;/声明excel对象beforeTime=DateTime.Now;/获取excel开始启动时间excel=newExcel.ApplicationClass();/创建对象实例,这时在系统进程中会多出一个excel进程after
33、Time=DateTime.Now;/获取excel启动结束的时间tryobjectmissing=System.Reflection.Missing.Value;/Missing用于调用带默认参数的方法。excel.Visible=false;/是否显示excel文档/OpenOriginalExcelFileexcel.Application.Workbooks.Add(true);_WorkbookmyBook;/声明Workbook类_WorksheetmySheet;/声明Worksheet类myBook=excel.Workbooks1;/获取excel程序的工作簿mySheet=
34、(Worksheet)myBook.ActiveSheet;/获取Workbook的活动工作表(最上层的工作表)。mySheet.Cells1,1=朝A,1单元格写入值;/SaveAsPathmySheet.SaveAs(path,missing,missing,missing,missing,missing,missing,missing,missing,missing);/释放Excel对象,但在AWeb程序中只有转向另一个页面的时候进程才结束/可以考虑使用KillExcelProcess()杀掉进程/ReleaseComObject方法递减运行库可调用包装的引用计数。详细信息见MSDNS
35、ystem.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);myBook.Close(null,null,null);excel.Workbooks.Close();mySheet=null;myBook=null;missing=null;excel.Quit();excel
36、=null;catchKillExcelProcess();/杀掉进程finally/可以把KillExcelProcess();放在该处从而杀掉Excel的进程KillExcelProcess();privatevoidKillExcelProcess()System.Diagnostics.ProcessmyProcesses;DateTimestartTime;myProcesses=System.Diagnostics.Process.GetProcessesByName(Excel);/得不到Excel进程ID,暂时只能判断进程启动时间foreach(System.Diagnosti
37、cs.ProcessmyProcessinmyProcesses)startTime=myProcess.StartTime;if(startTimebeforeTime&startTimeafterTime)myProcess.Kill();示例3:Excel程序的工作簿(workbook)常用方法属性介绍更多的workbook的方法和属性:HYPERLINK/zh-CN/library/microsoft.office.tools.excel.workbook_members.aspx/zh-CN/library/microsoft.office.tools.excel.workbook_
38、members.aspxusingSystem;usingExcel;namespaceExcelOperator.ClassExcel/Example1的摘要说明。/-2006.08.31Peter-/Excel程序的工作簿(workbook)常用方法属性介绍/在做完操作之后立刻结束excel进程,并保存excel文件/-End-/publicclassExample3privateDateTimebeforeTime;/Excel启动之前时间privateDateTimeafterTime;/Excel启动之后时间privatestringpath;publicExample3(strin
39、gpath)this.path=path;publicvoidOperatorExcel()/GC.Collect();Excel.Applicationexcel;/声明excel对象beforeTime=DateTime.Now;/获取excel开始启动时间excel=newExcel.ApplicationClass();/创建对象实例,这时在系统进程中会多出一个excel进程afterTime=DateTime.Now;/获取excel启动结束的时间tryobjectmissing=System.Reflection.Missing.Value;/Missing用于调用带默认参数的方法
40、。excel.Visible=false;/是否显示excel文档excel.Application.Workbooks.Add(true);_WorkbookmyBook;/声明Workbook类_WorksheetmySheet;/声明Worksheet类myBook=excel.Workbooks1;/+/+Workbook常用方法和属性+myBook.Author=Peter;/获取或设置工作簿的作者。stringmyBookApplication=myBook.Application.ToString();/获取表示工作簿创建者的Microsoft.Office.Interop.Ex
41、cel.Application。mySheet=(_Worksheet)myBook.ActiveSheet;/获取活动工作表(最上层的工作表)。stringmyBookFullName=myBook.FullName.ToString();/获取对象的名称,包括其磁盘路径。stringmyBookFileFormat=myBook.FileFormat.ToString();/获取工作簿的文件格式和类型。stringmyBookName=myBook.Name.ToString();/获取工作簿的名称。/其他详细属性见:/zh-CN/library/microsoft.office.tool
42、s.excel.workbook_members.aspx/+End+/+/SaveAsOriginalExcelFileToCurrentPathmyBook.SaveAs(path,missing,missing,missing,missing,missing,XlSaveAsAccessMode.xlNoChange,missing,missing,missing,missing,missing);/释放Excel对象,但在AWeb程序中只有转向另一个页面的时候进程才结束/可以考虑使用KillExcelProcess()杀掉进程/ReleaseComObject方法递减运行库可调用包装的
43、引用计数。详细信息见MSDNSystem.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);myBook.Close(null,null,null);excel.Workbooks.Close();mySheet=null;myBook=null;missing=null;exc
44、el.Quit();excel=null;catchKillExcelProcess();/杀掉进程finally/可以把KillExcelProcess();放在该处从而杀掉Excel的进程KillExcelProcess();privatevoidKillExcelProcess()System.Diagnostics.ProcessmyProcesses;DateTimestartTime;myProcesses=System.Diagnostics.Process.GetProcessesByName(Excel);/得不到Excel进程ID,暂时只能判断进程启动时间foreach(S
45、ystem.Diagnostics.ProcessmyProcessinmyProcesses)startTime=myProcess.StartTime;if(startTimebeforeTime&startTimeafterTime)myProcess.Kill();示例4:在工作簿(workbook)中添加删除工作表(worksheet)usingSystem;usingExcel;namespaceExcelOperator.ClassExcel/Example1的摘要说明。/-2006.08.31Peter-/工作表(worksheet)的添加和删除/在做完操作之后立刻结束exce
46、l进程,并保存excel文件/-End-/publicclassExample4privateDateTimebeforeTime;/Excel启动之前时间privateDateTimeafterTime;/Excel启动之后时间privatestringpath;publicExample4(stringpath)this.path=path;publicvoidOperatorExcel()/GC.Collect();Excel.Applicationexcel;/声明excel对象beforeTime=DateTime.Now;/获取excel开始启动时间excel=newExcel.A
47、pplicationClass();/创建对象实例,这时在系统进程中会多出一个excel进程afterTime=DateTime.Now;/获取excel启动结束的时间tryobjectmissing=System.Reflection.Missing.Value;/Missing用于调用带默认参数的方法。excel.Visible=false;/是否显示excel文档excel.Application.Workbooks.Add(true);_WorkbookmyBook;/声明Workbook类_WorksheetmySheet;/声明Worksheet类myBook=excel.Work
48、books1;objectmySheetEnd=(int)myBook.Sheets.Count;/在第一个位置添加工作表mySheet=(_Worksheet)myBook.Sheets.Add(missing,missing,missing,missing);mySheet.Name=MySheetFirst;/在第一个位置后面添家一个工作表_WorksheetmySheet1=(_Worksheet)myBook.Sheets.Add(missing,myBook.Sheets1,missing,missing);mySheet1.Name=MySheetEnd;/Add方法允许您将一个
49、新表添加到工作簿中的表集合中,并且可以接受四个可选参数,这些参数可以指明表的位置、要添加的表数和表的类型(工作表、图表等):/删除第三个工作表(Worksheet)myBook.Sheets3).Delete();/SaveAsOriginalExcelFileToCurrentPathmyBook.SaveAs(path,missing,missing,missing,missing,missing,XlSaveAsAccessMode.xlNoChange,missing,missing,missing,missing,missing);/释放Excel对象,但在AWeb程序中只有转向另一
50、个页面的时候进程才结束/可以考虑使用KillExcelProcess()杀掉进程/ReleaseComObject方法递减运行库可调用包装的引用计数。详细信息见MSDNSystem.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheetEnd);System.Runtime.Inte
51、ropServices.Marshal.ReleaseComObject(mySheet1);System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);myBook.Close(null,null,null);excel.Workbooks.Close();mySheet=null;mySheetEnd=null;mySheet1=null;/mySheetAfter=null;myBook=null;missing=null;excel.Quit();excel=null;catchKillExcelProcess();/杀
52、掉进程finally/可以把KillExcelProcess();放在该处从而杀掉Excel的进程KillExcelProcess();privatevoidKillExcelProcess()System.Diagnostics.ProcessmyProcesses;DateTimestartTime;myProcesses=System.Diagnostics.Process.GetProcessesByName(Excel);/得不到Excel进程ID,暂时只能判断进程启动时间foreach(System.Diagnostics.ProcessmyProcessinmyProcesses
53、)startTime=myProcess.StartTime;if(startTimebeforeTime&startTimeafterTime)myProcess.Kill();示例5:工作表(worksheet)和Range对象的操作usingSystem;usingExcel;namespaceExcelOperator.ClassExcel/Example1的摘要说明。/-2006.08.31Peter-/工作表(worksheet)的操作/在做完操作之后立刻结束excel进程,并保存excel文件/-End-/publicclassExample5privateDateTimebef
54、oreTime;/Excel启动之前时间privateDateTimeafterTime;/Excel启动之后时间privatestringpath;publicExample5(stringpath)this.path=path;publicvoidOperatorExcel()/GC.Collect();Excel.Applicationexcel;/声明excel对象beforeTime=DateTime.Now;/获取excel开始启动时间excel=newExcel.ApplicationClass();/创建对象实例,这时在系统进程中会多出一个excel进程afterTime=Da
55、teTime.Now;/获取excel启动结束的时间tryobjectmissing=System.Reflection.Missing.Value;/Missing用于调用带默认参数的方法。excel.Visible=false;/是否显示excel文档excel.Application.Workbooks.Add(true);_WorkbookmyBook;/声明Workbook类_WorksheetmySheet;/声明Worksheet类myBook=excel.Workbooks1;mySheet=(Worksheet)myBook.ActiveSheet;mySheet.Cells
56、1,1=123;/给某一单元格赋值Excel.Ranger=excel.ActiveCell;Excel.Ranger1=mySheet.get_Range(mySheet.Cells1,1,mySheet.Cells1,4);/Excel.Ranger1=mySheet.get_Range(A1:A10,missing);Excel.Ranger2=(Excel.Range)mySheet.Cells2,1;Excel.Ranger3=(Excel.Range)mySheet.Rows1,Type.Missing;Excel.Ranger4=(Excel.Range)mySheet.Colu
57、mnsType.Missing,5;r.Font.Bold=true;/设置字体r.Font.Color=System.Drawing.Color.Yellow.ToArgb();/设置字体颜色r.Cells.Interior.Color=System.Drawing.Color.Red.ToArgb();/设置背景颜色r.Borders.Color=55;/设置边框r.Borders.Weight=Excel.XlBorderWeight.xlThick;r.AddComment(这是第一个单元格);/增加批注/r.ClearContents();/保留格式清除内容r.HorizontalA
58、lignment=Excel.XlHAlign.xlHAlignCenter;/设置水平对齐方式r.VerticalAlignment=Excel.XlVAlign.xlVAlignBottom;/设置垂直对齐方式r1.Merge(true);/合并单元格mySheet.Cells2,1=1;/使用函数mySheet.Cells3,1=1;mySheet.Cells4,1=sum(A2:A3);r3.NumberFormat=XlColumnDataType.xlDMYFormat;/设置文本格式/SaveAsOriginalExcelFileToCurrentPathmyBook.SaveA
59、s(path,missing,missing,missing,missing,missing,XlSaveAsAccessMode.xlNoChange,missing,missing,missing,missing,missing);/释放Excel对象,但在AWeb程序中只有转向另一个页面的时候进程才结束/可以考虑使用KillExcelProcess()杀掉进程/ReleaseComObject方法递减运行库可调用包装的引用计数。详细信息见MSDNSystem.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);System.R
60、untime.InteropServices.Marshal.ReleaseComObject(mySheet);System.Runtime.InteropServices.Marshal.ReleaseComObject(excel);System.Runtime.InteropServices.Marshal.ReleaseComObject(r);System.Runtime.InteropServices.Marshal.ReleaseComObject(r1);System.Runtime.InteropServices.Marshal.ReleaseComObject(r2);S
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中教师学期教学总结(4篇)
- 法律在我身边主题精彩演讲稿(4篇)
- 初中安全文明小使者事迹材料(3篇)
- 土地租赁合同范文汇编(20篇)
- 武馆入学合同协议书范本
- 员工分红入股合同协议
- 和平协议书格式
- 员工买卖合同协议书范本
- 商品混凝土劳动合同协议
- 唐山土地流转合同协议
- 《始得西山宴游记》名师课件1
- MOOC 知识创新与学术规范-南京大学 中国大学慕课答案
- 《诗意中国》朗诵稿
- 卷烟厂电气专业笔试题
- 小学劳动课《劳动安全教育》
- 畸形舌侧沟临床对策培训课件
- 标准变压器用电负荷计算表
- DB12∕T 822-2018 路用高粘结力环氧乳化沥青技术要求
- “两票三制”专项整治工作方案(含检查表)
- JIS G3507-1-2021 冷镦用碳素钢.第1部分:线材
- 授居家二众三皈、五戒仪规
评论
0/150
提交评论