2013-12-06 22 views
2

Я пытаюсь добавить формулу в ячейку, но я получил ошибку Исключение из HRESULT: 0x800A03EC Есть много сообщений с подобными проблемами, однако никто не мог мне помочь плюс Я не делаю никаких причудливых формул, что я делаю неправильно?Добавление формулы в ячейки Исключение из HRESULT: 0x800A03EC

Thread.CurrentThread.CurrentCulture = 
new System.Globalization.CultureInfo("en-US"); 
workbook = application.Workbooks.Open(Helper.GetLocalInstalationFolder() + 
      @"\IMC.xltx", 0, false, 5, "", "", true, XlPlatform.xlWindows, "\t", false, 
                 false, 0, true, 1, 0); 
worksheet = workbook.Worksheets["Report"]; 
var rowValue = 0; 
for (int i = 2; i <= LastRow; i++) 
{ 
    rowValue = i - 1; 
    for (int j = 1; j <= 37; j++) 
    { 
      worksheet.Cells[i, j] = MyArray[rowValue, j]; 

    } 
    // I tried all the following all give the same exception: 
    worksheet.Range[i, 38].Formula = "=3+4"; 
    worksheet.get_Range("R" + i + "C38").FormulaR1C1 = "=3+4"; 
    worksheet.Range[i, 38].FormulaR1C1 = "=3+4"; 
    worksheet.get_Range("R" + i + "C38").Formula = "=3+4"; 
    } 

ответ

1

Это дерьмовое исключение и ничего больше, чем вы хлопнув Excel с обработкой не означает, запросов со скоростью, с которой она не может идти в ногу. Ваша программа по существу выглядит как гиперактивный пользователь, который вводит формулы со скоростью один на микросекунду.

Обходное решение должно идти медленнее путем намеренного сна или заставить Excel делать меньше работы. Вероятно, вы исправите это в этом случае, назначив свойство Application.Calculation. Перед началом применения формулы в ячейки установите ее в ручную. И вернитесь к авто после того, как вы закончите.

Другие полезные советы в this blog post.

0

В моем случае мне не хватало двойных кавычек в аргументах формулы HYPERLINK, т. Е. Сама формула была неправильной. Я пробовал действительную формулу, например ..Cell (x, y) .Formula = "= MIN (2)", и это сработало, поэтому это было так.

Смежные вопросы