保存工作簿时出错:System.Runtime.InteropServices.COMException异常:HRESULT为0x800A03EC。

4

我正在使用我的asp.net应用程序创建一个Excel文件。 我将此站点托管在IIS7上。

当我从服务器运行它时,在保存工作簿时会出现错误。

我的代码:

Workbook.SaveAs(Server.MapPath("Folder") + "\\" + filename + ".xls"
, Excel.XlFileFormat.xlHtml, objOpt, objOpt, false, false
,Excel.XlSaveAsAccessMode.xlShared, false, false, objOpt, objOpt);

我已经尝试解决这个问题一个星期了,希望能在这里得到一些帮助。

这是我的错误信息:

System.Runtime.InteropServices.COMException: Exception from HRESULT: 0x800A03EC 

我正在使用Office 2000,IIS7。我已经设置好了所有的授权。

任何建议都会受到高度赞赏。

这个 Web 应用程序有权限读写你要保存文件到的位置吗? - Bradley Smith
是的,它有权限... :( - ARB
机器的区域设置是否为英语(1033)? - Ritch Melton
仅需访问 http://support.microsoft.com/kb/257757 - Lex Li
@Ritch.. 机器语言环境设置为英语。 - ARB
在本地机器上,使用VB.NET连接Excel 2007时遇到了相同的问题。 - Christopher Mahan
2个回答

2

微软不支持在服务器场景(如IIS)中使用Interop。

有许多选项可以在没有Interop/在服务器上安装Excel的情况下读取/编辑/创建Excel文件:

微软提供了免费的OpenXML SDK V 2.0 - 参见http://msdn.microsoft.com/en-us/library/bb448854%28office.14%29.aspx (仅限XLSX)

这可以读写MS Office文件(包括Excel)。

另一个免费选项请参见http://www.codeproject.com/KB/office/OpenXML.aspx (仅限XLSX)

如果您需要更多功能,如处理旧版Excel(如XLS,而不仅仅是XLSX),渲染,创建PDF,公式等,则有不同的免费和商业库,如ClosedXML(免费,仅限XLSX),EPPlus(免费,仅限XLSX),Aspose.CellsSpreadsheetGearLibXLFlexcel等。


0
你在打开工作簿时是否将 "只读" 属性设置为 "true"?
请参考以下内容,了解如何以写入方式打开工作簿:
Microsoft.Office.Interop.Excel.Application xlApp = null;
Microsoft.Office.Interop.Excel.Workbook xlWorkBook = null;

xlApp = new Excel.ApplicationClass();
xlWorkBook = xlApp.Workbooks.Open(txtFilePath.Text, 0, false, 5, "", "", true, Microsoft.Office.Interop.Excel.XlPlatform.xlWindows, "\t", false, false, 0, true, 1, 0);

'xlApp.Workbooks.Open'方法的第三个参数为'false'表示工作簿不是只读的。

这只是一个猜测,因为您没有分享任何有关如何打开工作簿的代码。希望能帮到您。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接