WEB方式下,EXCEL的生成问题!

pluto999 2004-06-18 11:14:34
FAQ里有一篇文章 《生成Excel文件》



我正好开发WEB APPLICATION,需要在在服务器端生成EXCEL文件,然后在客户端打开


原代码为C#如下:

[解决思路:因此种调用方式实际为调用服务端的Excel,故我们生成xls文件放置于服务器上,然后在客户端予以打开。
相信国外的www.dbnetgrid.com的dbgrid控件生成Excel和Word文件也是采用此种方式。]

Excel.Application oExcel;
Excel.Workbook oBook;
Object oMissing = System.Reflection.Missing.Value;
oExcel = new Excel.Application();
oBook = oExcel.Workbooks.Add(oMissing);
for (int i=1;i<=4;i++)
{
oExcel.Cells[i,1]=i.ToString();
oExcel.Cells[i,2]="'bbb2";
oExcel.Cells[i,3]="'ccc3";
oExcel.Cells[i,4]="'aaa4";
}
oBook.Saved = true;
oExcel.UserControl = false;
string mm=Server.MapPath(".")+"\\aa.xls";//服务器保存地址
oExcel.ActiveWorkbook.SaveCopyAs (mm);
oExcel.Quit();
Response.Redirect ("aa.xls");



我将代码改为vb:

Dim oExcel As New Excel.Application()
Dim oBook As Excel.Workbook
Dim oMissing As Object = System.Reflection.Missing.Value
oBook = oExcel.Workbooks.Add(oMissing)

Dim i As Integer = 1
While i <= 4
oExcel.Cells(i, 1) = i.ToString
oExcel.Cells(i, 2) = "'bbb2"
oExcel.Cells(i, 3) = "'ccc3"
oExcel.Cells(i, 4) = "'aaa4"
i = i + 1
End While

oBook.Saved = True
oExcel.UserControl = False

oExcel.ActiveWorkbook.SaveCopyAs(Server.MapPath(".") + "\aa.xls")
oExcel.Quit()





运行时报如下错误:

拒绝访问。
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.UnauthorizedAccessException: 拒绝访问。

未授权此 ASP.NET 进程访问所请求的资源。出于安全原因,默认的 ASP.NET 进程标识为“{machinename}\ASPNET”,它只具有有限的特权。请考虑授予该 ASP.NET 进程标识访问此资源的权限。

若要授予 ASP.NET 对文件的写访问权,请在资源管理器中右击该文件,选择“属性”,然后选择“安全”选项卡。单击“添加”以添加“{machinename}\ASPNET”用户。突出显示此 ASP.NET 帐户,在“允许”列中选中“写”框。

源错误:


行 42:
行 43:
行 44: Dim oExcel As New Excel.Application()
行 45: Dim oBook As Excel.Workbook
行 46: Dim oMissing As Object = System.Reflection.Missing.Value


源文件: C:\Inetpub\wwwroot\Gzjj\_Excel.aspx.vb 行: 44


我试着把IIS目录权限开放了 写入 ,还是不行。


请教高手如何解决!




...全文
84 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pluto999 2004-06-19
  • 打赏
  • 举报
回复
问题解决!非常感谢!
bitsbird 2004-06-18
  • 打赏
  • 举报
回复
开始
运行
dcomcnfg
组件服务一项中选择Dcom配置,找到Microsoft excel应用程序,察看属性
安全选项卡中,启动权限和访问权限,如果为了方便,可以添加Every one(或ASPNET)的用户
赋予权限,标识选项卡中选择交互式用户
另外 在Web.config中 添加模拟用户 <identity impersonate="true"/>
完毕后重新启动机器

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧