23.08.2016, 11:20 | #1 |
Участник
|
Проблема с формулами в Excel
Всем доброго времени суток!
Проблема в следующем: из textBuffer в excel записываю данные. Некоторые их этих данных - формулы в виде "=...", однако excel изначально эти формулы не воспринимает. Работать они начинают только в том случае, если выделить формулу в ячейке и нажать enter. Или если выделить все ячейки с формулами и заменить "=" на "=". Но хотелось бы как-то это автоматизировано сделать, чтобы формулы были рабочими сразу. Но не особо представляю, как реализовать. Формат ячеек в шаблоне Excel, куда записываются формулы, общий. |
|
23.08.2016, 11:24 | #2 |
Участник
|
Цитата:
Там есть специальный метод InsertFormula на ComExcelDocument_RU, который использует COM метод FormulaR1C1, у меня проблем не возникало. |
|
25.08.2016, 14:31 | #3 |
Участник
|
Формулы вида '=RC[-2]+RC[-1]' или '=J4-D4' ?
Можно так: X++: TextToColumns = range.TextToColumns();
range.NumberFormat("# ##0,0"); Последний раз редактировалось Player1; 25.08.2016 в 14:44. |
|
25.08.2016, 14:56 | #4 |
Участник
|
Запись в Excel происходит следующим образом:
есть такой объект Microsoft.Office.Interop.Excel.Range tmpRange; мы берем, копируем в буффер обмена данные из текстового буфера: _textBuffer.toClipboard(); А после этого просто вставляем из этого буффера обмена в excel: tmpRange.PasteSpecial(xlPasteTypeAll, xlPasteSpecialOperation, missing, missing); При этом заметил, что формулы, которые проделывают только математические операции ( к примеру =A1+B2*10) в Excel работают, а формулы, которые содержат слова (СУММ, ПРАВсимв и т.д.) воспринимаются только после ручной активации. |
|
25.08.2016, 15:36 | #5 |
Участник
|
Формулы с русскими именами функций нужно писать в FormulaLocal или FormulaR1C1Local, а для Formula и FormulaR1C1 можно использовать только оригинальные английские наименования
|
|