(1)、设置ASP.NET有控制EXCEL的权限
Excel2000和Excel2002对Excel的引用对象是不一样的,一个是EXCEL9.OLB;另一个是EXCEL10.OLB;分别到相应的目录下去引用即可!同时,Excel2000和Excel2002下面的参数是不一样的。Excel2000下面的参数少一个,将oMissiong干掉一个就OK(这么简单阿!)。
操作Excel的时候,可能会发生Excel进程被锁定,无法退出,解决方法是在保存完并关闭myBook(工作簿)后,别关闭Excel进程(//myApp.Quit();)。这样的结果是服务器上始终有一个Excel的进程。但也无所谓,比起开始n个Excel进程好多了!(试过好多网友提供的方法,几乎没有好用的,呵呵)
可能会出现asp_net用户操作Excel的权限不够,配置Dcom。运行Dcomcnfg.exe,找到Excel应用程序,配置其属性,身份验证级别选“无”,身份标识选“交互式用户”,安全性页面,启动和访问均给everyone。注意:查看当前进程中是否有Winword进程存在,如果有且不能被结束,那么重启动计算机。再次运行你的代码即OK。这样以后就不会出现权限不够的情况了。
(2)、添加EXCEL的引用
在解决方案的引用中右键单击,然后点添加引用。然后选择COM,选择MICROSOFT EXCEL 10.0 OBJECT LIBRARY
(3)、在程序中引用using System.IO;然后写程序
File.Copy(Server.MapPath("yangbiao\\")+"my.xls",Server.MapPath("baobiao\\")+"my.xls",true);
Excel.ApplicationClass myApp;
Excel.Workbook myBook;
Excel.Worksheet mySheet;
myApp=null;
myBook=null;
mySheet=null;
object oMissiong=System.Reflection.Missing.Value;
myApp=new Excel.ApplicationClass();
myApp.Visible=false;
myApp.Workbooks.Open(Server.MapPath("baobiao\\")+"my.xls",oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong,oMissiong);
myBook=myApp.Workbooks[1];
mySheet=(Excel.Worksheet)myBook.ActiveSheet;
mySheet.Cells[1,1]="成功了";//付值
mySheet.get_Range("A1", "Z1").EntireRow.Insert(true,true);//插入一行
mySheet.get_Range("A1", "Z1").EntireRow.Delete(true);//删除一行
mySheet.get_Range("A1", "Z1").EntireRow.AutoFit();//合适宽度
mySheet.get_Range("A1", "Z1").Font.Size=30;
mySheet.get_Range("A1", "Z1").Font.Bold = true;
mySheet.get_Range("A1", "Z1").VerticalAlignment =Excel.XlVAlign.xlVAlignCenter;//对齐方式
mySheet.get_Range("B2", "B2").Borders.LineStyle=Excel.XlLineStyle.xlContinuous;//加网格
mySheet.get_Range("B9", "B9").Columns.ColumnWidth=150;//调整列宽
mySheet.get_Range("B10", "B10").Columns.RowHeight=150;//调整行高
mySheet.get_Range("A1", "Z1").MergeCells=true;//合并单元格
myBook.Save();
myBook.Close( true,Server.MapPath("baobiao\\")+"my.xls",true);
//myApp.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(mySheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myBook);
System.Runtime.InteropServices.Marshal.ReleaseComObject(myApp);
Response.Redirect("baobiao\\my.xls");