При экспорте данных в excel через COM Interop Я получаю сообщение об ошибке (код 0x800A03EC) при попытке установить свойство AxisTitle.Text. Это происходит ТОЛЬКО на одном конкретном компьютере с Windows 7 x64 Professional и Excel 2003. Я пробовал его на разных компьютерах (включая Win7 x64 Professional + Excel 2003), но не могу воспроизвести эту ошибку на любой другой машине.COMException 0x800A03EC при настройке оси title
private static void setAxisTitle(_Chart tChart, string aszTimeUnit)
{
Axis tAxis = (Axis)tChart.Axes(XlAxisType.xlValue, XlAxisGroup.xlPrimary);
try
{
tAxis.HasTitle = true;
tAxis.AxisTitle.Text = "Messwert [um/m]";
tAxis = (Axis)tChart.Axes(XlAxisType.xlCategory, XlAxisGroup.xlPrimary);
tAxis.HasTitle = true;
tAxis.AxisTitle.Text = string.Format("Zeit [{0}]", aszTimeUnit);
}
catch (Exception aEx)
{
cLogger.ErrorFormat("error setting axis title for time unit '{0}' on Axis '{1}'", aszTimeUnit, tAxis.AxisTitle);
cLogger.Error("error stack trace:", aEx);
throw;
}
}
Кому-то пришло в голову, как решить эту дилемму?
EDIT: По теме разных культур: Обе ОС и Excel имеют одинаковую культуру. ОДНАКО, я (думаю я) делать обрабатывать любые проблемы, которые могут возникнуть в связи с этим с помощью следующего кода:
static Excel2007Export()
{
Microsoft.Office.Interop.Excel.Application tExcel = new Application();
cSystemCulture = Thread.CurrentThread.CurrentCulture;
cExcelCulture = new CultureInfo(tExcel.LanguageSettings.get_LanguageID(
Microsoft.Office.Core.MsoAppLanguageID.msoLanguageIDUI));
try
{
Thread.CurrentThread.CurrentCulture = cExcelCulture;
int tVersion;
bool tParseSucceded = Int32.TryParse(tExcel.Version.Substring(0, tExcel.Version.IndexOf('.')), out tVersion);
// 12 is the first version with .xlsx extension
if (tVersion >= 12)
cDefaultExtension = ".xlsx";
else
cDefaultExtension = ".xls";
}
catch (Exception aException)
{
cLogger.Debug("error retrieving excel version.", aException);
cLogger.Error("error retrieving excel version.");
}
finally
{
Thread.CurrentThread.CurrentCulture = cSystemCulture;
}
}
Это очень дерьмовая ошибка Excel, которая может означать много вещей. Вы можете Google «Ошибка Excel 1004», но будет много трещин, чтобы копать. Выбрасывание машины из 4-го окна также работает. Удачи. –
@ Hans: ROFL :-) +1 для этого прямого ответа – yas4891
Те же пакеты обновлений на обеих машинах? – code4life