asp.net 操作Excel 问题 急!!!

milo4210 2012-09-19 02:48:52
引用的是 Microsoft Excel 12.0 Object Library 这个Com组件
本地开发没有问题,上传到服务器后,开启了com 组件的权限,包括:
1. Microsoft Excel Application
标识: 启动用户
安全: 启动和激活权限 添加了Everyone、Internet来宾用户、ASPNET、NETWORK SERVICE、IWAM 都是所有权限都打开
访问权限和配置权限同上

2. 全局Com安全 访问权限和启动和激活权限也同上

运行程序,结果跑出了一个非托管异常,部分代码如下:

Application app = null;
Workbook workbook = null;
try
{
Logger.WriteInfo("prepare create excel application......");
app = new Application();
app.Visible = false;
Logger.WriteInfo("application create successfully!");
Workbooks books = app.Workbooks;
Logger.WriteInfo("workbooks create successfully!");
workbook = books.Add(Missing.Value);
Logger.WriteInfo("workbook create successfully!");

GeneratedExcel(tblReport, tblDevice, tblTrend, workbook);

workbook.Saved = true;
app.ActiveWorkbook.SaveCopyAs(savePath);
return true;
}
catch (Exception ex)
{
return false;
}
finally
{
workbook.Close(null, null, null);
app.Workbooks.Close();
Marshal.ReleaseComObject((object)workbook);
app.Quit();
KillExcel(app);
}

程序运行到标红这句时,抛出空指针异常, 而且catch无法捕获
不知各位是否遇到过类似情况?请指点一二
...全文
151 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
宝_爸 2012-09-19
  • 打赏
  • 举报
回复
这个不是非托管异常啊。是你的程序里的DuoMi.BIDataExport.Web.AppCode.ExcelGenerater.Execute

用remote debug调试一下
milo4210 2012-09-19
  • 打赏
  • 举报
回复
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.

Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
DuoMi.BIDataExport.Web.AppCode.ExcelGenerater.Execute(String savePath, DataTable tblReport, DataTable tblDevice, DataTable tblTrend) +412
DuoMi.BIDataExport.Web.ExportData.ExportDataToExcel(String startDate, String endDate, String version, String channel) +430
DuoMi.BIDataExport.Web.ExportData.btnExport_Click(Object sender, EventArgs e) +628
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +118
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +112
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +36
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +5563


宝_爸 2012-09-19
  • 打赏
  • 举报
回复
贴下完整的异常信息。
milo4210 2012-09-19
  • 打赏
  • 举报
回复
说明一下,生成Excel 的程序不是一个控制台程序,是一个aspx页面点击一个按钮之后,调用的一个类
milo4210 2012-09-19
  • 打赏
  • 举报
回复
workbooks.add(true) 早些时候也试过了,同样抛异常
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
Excel.Application app = new Excel.Application();
workbook = app.Workbooks.Add(true);
试试

参考
http://support.microsoft.com/kb/302084
milo4210 2012-09-19
  • 打赏
  • 举报
回复
books 不是 null
宝_爸 2012-09-19
  • 打赏
  • 举报
回复
空指针异常
books为null了?
milo4210 2012-09-19
  • 打赏
  • 举报
回复
孟子兄,还是同样的错误
孟子E章 2012-09-19
  • 打赏
  • 举报
回复
试试
workbook = books.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
或者
workbook = books.Add();

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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