博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在ASP.NET中操作EXCEL文件
阅读量:5052 次
发布时间:2019-06-12

本文共 2899 字,大约阅读时间需要 9 分钟。

在ASP.NET中使用EXCEL,首先需要对COM组件的权限进行设置。如果未设置权限,则会报访问拒绝的错误。详细错误信息通常如下:
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.UnauthorizedAccessException: 拒绝访问。
ASP.NET 未被授权访问所请求的资源。请考虑授予 ASP.NET 请求标识访问此资源的权限。ASP.NET 有一个在应用程序没有模拟时使用的基进程标识(通常,在 IIS 5 上为 {MACHINE}\ASPNET,在 IIS 6 上为网络服务)。如果应用程序正在通过 <identity impersonate="true"/> 模拟,则标识将为匿名用户(通常为 IUSR_MACHINENAME)或经过身份验证的请求用户。
若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”添加适当的用户或组。突出显示 ASP.NET 帐户,选中所需访问权限对应的框。
设置权限的方法是在Windows的运行框中输入dcomcnfg,打开Com管理。在EXCEL应用程序的安全中,分别添加ASPNET、IUSER、IWAM等用户的访问、运行和配置权限。
设置权限之后,就可以使用ASP.NET读取Excel文件了。
首先创建一个aspx文件,在页面中加入一个Button和一个DataGrid控件。
在工程的引用中添加Excel引用,并将测试的电子表格文件放到D盘中。
在CS文件中的Button1_Click事件中输入如下代码:
private void Button1_Click(object sender, System.EventArgs e)
{
string excelFilePath=@"D:\Book1.xls";
Excel.Application myExcel=new Excel.ApplicationClass( ) ;
object oMissing = System.Reflection.Missing.Value ;
myExcel.Application.Workbooks.Open(excelFilePath,oMissing,oMissing,oMissing,oMissing,oMissing, oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing,oMissing) ;
Excel.Workbook myBook = myExcel.Workbooks[1] ;
Excel.Worksheet mySheet = (Excel.Worksheet)myBook.Worksheets[1] ;
System.Data.DataTable dt=new System.Data.DataTable("mytable");
dt.Columns.Add("F1", System.Type.GetType("System.String"));
dt.Columns.Add("F2", System.Type.GetType("System.String"));
dt.Columns.Add("F3", System.Type.GetType("System.String"));
dt.Columns.Add("F4", System.Type.GetType("System.String"));
dt.Columns.Add("F5", System.Type.GetType("System.String"));
DataSet myDs = new DataSet();
myDs.Tables.Add(dt);
DataRow myRow;
myDs.Clear();
for( int i = 2 ; i <= 4 ; i ++ ) //第一行为标题,不读取
{
myRow = myDs.Tables["mytable"].NewRow();
for( int j = 1 ; j <= 5 ; j ++ )
{
Excel.Range r=(Excel.Range)mySheet.Cells[i,j];
string strValue=r.Text.ToString();
string aa=strValue;
string columnname="F"+j.ToString();
myRow[columnname]=strValue;
}
myDs.Tables["mytable"].Rows.Add(myRow);
}
DataGrid1.DataSource=myDs.Tables["mytable"].DefaultView;
DataGrid1.DataBind();
}
在Web窗体中加入一个Button控件,在它的click事件中输入如下代码,即可以实现写入Excel文件。
写Excel文件时,还要把项目文件夹的权限进行设置,对iuser_machine用户有可写的权限。
private void Button1_Click(object sender, System.EventArgs e)
{string filename="";
Excel.ApplicationClass oExcel;
oExcel = new Excel.ApplicationClass();
oExcel.UserControl = false;
Excel.WorkbookClass wb = (Excel.WorkbookClass) oExcel.Workbooks.Add(System.Reflection.Missing.Value);
for(int i = 1;i <= 5; i++)
{
oExcel.Cells[i,1]=i.ToString();
oExcel.Cells[i,2]="'第2列";
oExcel.Cells[i,3]="'第3列";
oExcel.Cells[i,4]="'第4列";
}
wb.Saved = true;
filename= Request.PhysicalApplicationPath + "test.xls";
oExcel.ActiveWorkbook.SaveCopyAs(filename);
oExcel.Quit();
System.GC.Collect();
Response.Redirect( Request.ApplicationPath + "/test.xls");
}

转载于:https://www.cnblogs.com/jerrypen/archive/2011/09/22/2185665.html

你可能感兴趣的文章
js input radio点击事件
查看>>
okhttp post form表单
查看>>
STL中map的简单使用简介【转】
查看>>
【LOJ】#2057. 「TJOI / HEOI2016」游戏
查看>>
VC++编译说明
查看>>
Sitecore客户体验成熟度模型之旅
查看>>
浅析redis缓存 在spring中的配置 及其简单的使用
查看>>
SSL-ZYC 洛谷 P1118 数字三角形
查看>>
关于APNs的错误认识纠正
查看>>
InotifyPropertyChanged接口实现简单数据绑定
查看>>
text-align:center 在FireFox及Google浏览器下无效的问题
查看>>
BZOJ1692: [Usaco2007 Dec]队列变换
查看>>
《POINTERS ON C》(基于ANSI C)知识点及附带问题(三)
查看>>
leetcode dp
查看>>
简单回射程序小结
查看>>
iOS - 通过UIActivityViewController分享APP内容
查看>>
阿里云云主机挂载数据盘,格式化硬盘(新购云主机)(转)
查看>>
JSON与JavaBean、XML之间的转换
查看>>
腾讯视频qlv格式转换mp4普通视频方法
查看>>
Maven中classifier
查看>>