在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文件了。
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 " ); } |