gpt4 book ai didi

c# - COMException 故障

转载 作者:太空宇宙 更新时间:2023-11-03 16:57:46 27 4
gpt4 key购买 nike

有谁知道是否有网站(甚至非 Microsoft)有关于 COMExceptions/HRESULTS 的详细信息。

当我尝试在使用 Copy() 函数后保存我的 Excel 工作簿时,我收到此错误:

ERROR - Unable to SaveWorkbook()
System.Runtime.InteropServices.COMException (0x800A03EC): Document not saved.

附言我在 10K+ 文件的紧密循环中执行此操作,但读取文件效果很好,但事实证明保存它们并不有趣。

此外,如果有人在使用 Copy() 函数时遇到 Excel 内存溢出问题,请告诉我。

谢谢!

P.S.S 如果有人需要进一步说明,请告诉我

编辑 1

这是正在发生的事情。我被要求更新一些 XLS 文件(实际上 10K+),方法是将事件工作表复制到新工作表(相同的工作簿)并通过执行一些转换来更新原始工作表。当我保存工作簿时出现问题。

以下是我的申请的一些摘录:

///.... UpdateSpreadsheet() Routine
Microsoft.Office.Interop.Excel.Workbook wb = null;

try
{
wb = ef.GetWorkbook(fileName, false, true);
}
catch (Exception ex)
{
logger.Error(ex.ToString());
}

Microsoft.Office.Interop.Excel.Worksheet ws = null;

try
{
ws = wb.Sheets[Foo.WorksheetName] as Microsoft.Office.Interop.Excel.Worksheet;
}
catch (Exception ex)
{
logger.Error(ex.ToString());
}

bool result = false;

if (ws != null)
result = ef.CopyWorksheet(ws, Foo.WorksheetName);

if (result)
{
//... update the sheet as appropriate
}

try
{
ef.SaveWorkbook(wb, fileName); //eventually this line crashes, it's random, but so far after the 500th file, and I get that COM Exception.
//.. update Foo object to reflect copied worksheet
}
catch (Exception ex)
{
//something happened, we can't save, so close and destroy the workbook
logger.Error("Unable to SaveWorkbook()", ex);
}
finally
{
ef.DestoryWorkbook(wb, fileName);
ef.DestroyWorksheet(ws);
}

//// CopyWorksheet() Method
public bool CopyWorksheet(Worksheet ws, String sourceSheet)
{
try
{
try
{
Worksheet sheet = GetWorksheet(sourceSheet + " (2)");

//I don't think the below is necessary, but I'm paranoid about memory leaks
ExcelTools.OfficeUtil.ReleaseRCM(sheet);
sheet = null;

return false;
}
catch (Exception)
{
ws.Copy(Missing.Value, ws); //this line never errors out
}

return true;
}
catch (Exception)
{
return false;
}
finally
{
ws.Activate();
}
}

/// SaveWorkbook()
public void SaveWorkbook(Workbook wb)
{
if (wb != null)
{
wb.Save();
}
}

最佳答案

如果你分解HRESULT值,设施代码是FACILITY_CONTROL,错误代码是1004。从一些在线搜索看来,这个代码是为各种不同的错误生成的,其中一些似乎与以编程方式复制工作表有关(参见示例 this KB article)。

发布有关您正在做的事情的更多详细信息可能会有所帮助,或者 search online for this HRESULT并查看其他人可能遇到的哪些问题与您正在做的类似。

关于c# - COMException 故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/976951/

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