【IT168 技术文档】一、环境设置
1.服务器端必须安装EXCEL
2.所有Excel的程序操作都来源于Excel的对象库Excel9.olb.使用Tlbimp这个工具将Excel9.0的对象库文件Excel9.olb转换成为dll,这样才能做为.Net平台Assembly来使用:
TlbImp Excel9.olb
这样会得到3个文件"Excel.dll"、"Office.dll"、"VBIDE.dll"
只要有了这个Excel.dll,现在我们就能使用Excel的各种操作函数了
3.服务器端的权限设置
服务器端必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft Excel后点击属性,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。在“标识”中设置为交互式用户,保存完毕后重新启动服务器。
***如果不设置交互式用户,EXCEL进程如果停留在内存中,你是无法结束进程的
二、操作EXCEL文件
1.在项目中添加引用,用TlbImp会得到3个文件,在项目中全部引用
2.操作EXCEL的时要用到几个对象,Application,Workbook,WorkSheet,Range
操作EXCEL首先要建立一个Application对象,然后再得到Application对象的WorkBooks对象,使用WorkBooks对象打开一个EXCEL文件就得到一个WorkBook对象,由WorkBook对象得到WorkSheet对象,基本上有了WorkSheet对象就可以操作EXCEL了,在下面的例子中就没有用到RANGE:
例程:
Excel.ApplicationClass excelApp=null;
Excel.Workbooks exBooks=null;
Excel._Workbook exBook=null;
Excel._Worksheet exSheet=null;
object mo=System.Reflection.Missing.Value;
try
...{
excelApp=new Excel.ApplicationClass();
exBooks=excelApp.Workbooks;
exBook=exBooks.Open("d:\\sample.xls",mo,mo,mo,mo,mo,mo,mo,mo,mo,mo,mo,mo);
exSheet = (Excel._Worksheet)exBook.Worksheets["Sheet1"];
//Sheet1为你工作表的名称,也可以是数字,那就是你工作表的序号exSheet.Cells[i,j]="***";//通过这种方式向EXCEL表格中写入数据,写入第i行的第j列
}
catch(Exception ex)
...{
Response.Write(ex.Message);
Response.End();
}
finally
...{
exBook.Save();
![]()
exBook.Close(true,mo,mo);
exBooks.Close();
System.Runtime.InteropServices.Marshal.ReleaseComObject(exSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(exBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(exBooks);
exBooks=null;
exBook = null;
exSheet = null;
excelApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp);
excelApp = null;
GC.Collect();
}
![]()
然后保存,后面的代码全是为了释放资源的,因为此方法操作EXCEL有个问题,就是EXCEL经常会不能正常关闭,我使用上面的方法,有时能够关闭,有时内存中会有一个EXCEL运行,但不会有多个
