是否有人知道某个网站(甚至是非Microsoft),其中包含有关COMExceptions / HRESULTS的详细信息。
当我在使用Copy()函数后尝试保存Excel工作簿时,收到此错误:
ERROR - Unable to SaveWorkbook()
System.Runtime.InteropServices.COMException (0x800A03EC): Document not saved.
P.S。我正在以10K +文件的紧密循环方式执行此操作,但读取文件的效果很好,但保存它们并不是很有趣。
另外,如果有人在使用Copy()函数时出现Excel出现内存问题,请告诉我。
谢谢!
P.S.S如果有人需要进一步澄清,请告诉我
这是发生了什么。我被要求更新一些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();
}
}
答案 0 :(得分:0)
如果分解HRESULT值,设施代码为FACILITY_CONTROL
,错误代码为1004.从某些在线搜索中,似乎是为各种不同的错误生成了此代码,其中一些错误似乎与以编程方式复制工作表相关(参见例如this KB article)。
发布有关您正在做的事情的详细信息或search online for this HRESULT可能有助于了解其他人可能遇到的与您正在做的事情类似的问题。