错误是:
HRESULT的异常:0x800A03EC。
答案 0 :(得分:0)
我曾经历过这一次。我正在编写Excel工作表时打开Excel文件。所以,我通过将文件打开直到完成保存操作来解决它。
答案 1 :(得分:0)
这只是猜测,但过去让我感到悲伤......
excel(以及其他办公产品)中存在一个错误,当使用其他文化调用方法而不是英语时,会出现此错误代码。
解决这个问题的正确方法是改变文化:
CultureInfo oldCulture = Thread.CurrentThread.CurrentCulture;
try {
// use excel here
} finally { // restore culture
Thread.CurrentThread.CurrentCulture = oldCulture;
}
我写了一堂课来帮助解决这个问题。你可以这样使用它:
using(new RunInCulture.English) {
// use excel here
}
这是代码:
public class RunInCulture : IDisposable
{
CultureInfo _oldCulture;
public RunInCulture(string culture)
: this(CultureInfo.GetCultureInfo(culture))
{
}
public RunInCulture(CultureInfo culture)
{
_oldCulture = Thread.CurrentThread.CurrentCulture;
Thread.CurrentThread.CurrentCulture = culture;
}
public static RunInCulture Invariant
{
get
{
return new RunInCulture(CultureInfo.InvariantCulture);
}
}
public static RunInCulture English
{
get
{
return new RunInCulture("en-US");
}
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
private void Dispose(bool disposing)
{
if (disposing)
Thread.CurrentThread.CurrentCulture = _oldCulture;
}
~RunInCulture()
{
Dispose(false);
}
}
public class EnglishCulture : RunInCulture
{
public EnglishCulture()
: base("en-US")
{
}
}
答案 2 :(得分:0)
我解决了这个问题,改变了我引用需要保存的工作簿的方式。
方式1
var wkb = excelInstance.Workbooks[1];
wkb.SaveAs(targetReportPath);
// This works
方式2
excelInstance.ThisWorkbook.SaveAs(targetReportPath);
// This fails...