ASP.NET学习基础二八:控制EXCEL文件

本文介绍了如何在ASP.NET中正确引用和使用Excel,包括不同版本的引用差异,避免Excel进程被锁定的方法,以及解决权限不足问题的步骤,如配置Dcom和使用Marshal.ReleaseComObject释放资源。
摘要由CSDN通过智能技术生成

1)、设置ASP.NET有控制EXCEL的权限

Excel2000Excel2002Excel的引用对象是不一样的,一个是EXCEL9.OLB;另一个是EXCEL10.OLB;分别到相应的目录下去引用即可!同时,Excel2000Excel2002下面的参数是不一样的。Excel2000下面的参数少一个,将oMissiong干掉一个就OK(这么简单阿!)。

操作Excel的时候,可能会发生Excel进程被锁定,无法退出,解决方法是在保存完并关闭myBook(工作簿)后,别关闭Excel进程(//myApp.Quit();)。这样的结果是服务器上始终有一个Excel的进程。但也无所谓,比起开始nExcel进程好多了!(试过好多网友提供的方法,几乎没有好用的,呵呵)

可能会出现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");

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值