gpt4 book ai didi

c# - H结果 : 0x800A03EC - It works on my machine issue when creating Excel files

转载 作者:行者123 更新时间:2023-12-02 09:17:46 26 4
gpt4 key购买 nike

我正在我的 asp.net 应用程序中使用来自 mssql 服务器的数据创建 Excel 报告。这是我的方法:

[WebMethod]
public static string ExportToExcel(string sourcetype)
{
Microsoft.Office.Interop.Excel.Application oXL;
Microsoft.Office.Interop.Excel._Workbook oWB;
Microsoft.Office.Interop.Excel._Worksheet oSheet;
Microsoft.Office.Interop.Excel.Range oRng;

try
{
oXL = new Microsoft.Office.Interop.Excel.Application();
oXL.Visible = false;

oWB = (Microsoft.Office.Interop.Excel._Workbook)(oXL.Workbooks.Add(Missing.Value));
oSheet = (Microsoft.Office.Interop.Excel._Worksheet)oWB.ActiveSheet;

List<ExcelReport> dataToExport = APIClient.GetExcelReportData(Utility.getCurrentFilterId(), sourcetype);

oSheet.Cells[1, 1] = "Source";
oSheet.Cells[1, 2] = "UserName";
oSheet.Cells[1, 3] = "Name";
oSheet.Cells[1, 4] = "Message";
oSheet.Cells[1, 5] = "Title";
//oSheet.Cells[1, 6] = "Date";

int activeRow = 2;

for (int i = 0; i < dataToExport.Count; i++)
{
oSheet.Cells[activeRow, 1] = dataToExport[i].Source;
oSheet.Cells[activeRow, 2] = dataToExport[i].UserName;
oSheet.Cells[activeRow, 3] = dataToExport[i].Name;
oSheet.Cells[activeRow, 4] = dataToExport[i].Message;
oSheet.Cells[activeRow, 5] = dataToExport[i].MessageTitle;
//oSheet.Cells[activeRow, 6] = dataToExport[i].EntityDate;

activeRow++;
}

oSheet.get_Range("A1", "Z1").Font.Bold = true;
oSheet.get_Range("A1", "Z1").VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
oRng = oSheet.get_Range("A1", "Z1");
oRng.EntireColumn.AutoFit();
oXL.Visible = false;
oXL.UserControl = false;

string strFile = "report" + System.DateTime.Now.Ticks.ToString() + ".xls";
string strCurrentDir = HttpContext.Current.Server.MapPath(".") + "\\ExcelReports\\";
oWB.SaveAs(strCurrentDir + strFile, Microsoft.Office.Interop.Excel.XlFileFormat.xlWorkbookNormal, null, null, false,
false, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode.xlShared, false, false, null, null, null);
//oWB.SaveCopyAs(strCurrentDir + strFile);
oWB.Close(null, null, null);
oXL.Workbooks.Close();
oXL.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(oRng);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oXL);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oSheet);
System.Runtime.InteropServices.Marshal.ReleaseComObject(oWB);
oSheet = null;
oWB = null;
oXL = null;
GC.Collect(); // force final cleanup!

//errLabel.Text = "<A href=http://" + strMachineName + "/ExcelGen/" + strFile + ">Download Report</a>";
//string result = "<a href=\"~/ExcelReports/" + strFile + ">Raporu İndir</a>";
string result = "ExcelReports/" + strFile;
return result;
}
catch (Exception theException)
{
String errorMessage;
errorMessage = "Error: ";
errorMessage = String.Concat(errorMessage, theException.Message);
errorMessage = String.Concat(errorMessage, " Line: ");
errorMessage = String.Concat(errorMessage, theException.Source);

return errorMessage;
}

}

当我在 vs 2010 中打开源代码并按 F5 时,它在我的机器和应用程序发布到的服务器上运行良好。但是,如果我尝试通过 IIS 使用浏览器访问我的应用程序,则会收到 HRESULT: 0x800A03EC 错误。

我尝试了以下命令:

appcmd set config -section:asp -enableParentPaths:true

我尝试授予我的文件夹写入权限。

我尝试从组件服务更改我的 MS Excel 应用程序设置。

但是没办法!我无法让它工作。你有什么主意吗?我的配置有误吗?

提前致谢,

最佳答案

我重现了您的问题..尝试了所有:oWB.SaveAs/oWB._SaveAs/( oXL.ActiveSheet as Microsoft.Office.Interop.Excel。 Worksheet ).SaveAs/oWB.Application.ActiveWorkbook.SaveAs 均抛出异常:HRESULT:0x800A03EC...

但我看到您尝试过:oWB.SaveCopyAs(strCurrentDir + strFile);如果我设置下一步,它就会起作用:

oWB.Saved = true;
oWB.SaveCopyAs( strCurrentDir + strFile );

为什么不使用SaveCopyAs

关于c# - H结果 : 0x800A03EC - It works on my machine issue when creating Excel files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5327400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com