0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
1
.NET 4.x

Создать вычисляемое поле в Excel

16.10.2016, 08:47. Показов 1547. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день. Нужна помощь: я только начал работать с Excel из C#, заполнять ячейки значениями получается, но создать вычисляемое поле нет.Вот формула:
=ЕСЛИ(A2=A1;G1+E2*F2;E2*F2)
Вот код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
Excel.Application exApp = new Excel.Application();
            exApp.Workbooks.Add();
            Excel.Worksheet workSheet = (Excel.Worksheet)exApp.ActiveSheet;     
            for (int i = 0; i < shapka.Length; i++) { workSheet.Cells[1, i+1] = shapka[i]; }
            for (int j = 2; j <= odid1.Count+1; j++) {
                workSheet.Cells[j, 1] = odid1[j-2];
                workSheet.Cells[j, 2] = orddate1[j - 2];
                workSheet.Cells[j, 3] = odpid1[j - 2];
                workSheet.Cells[j, 4] = prname1[j - 2];
                workSheet.Cells[j, 5] = odcount1[j - 2];
                workSheet.Cells[j, 6] = odprice1[j - 2];
                string s = "=ЕСЛИ(A" + j + "=A" + (j -1) + ";G" + j + "+E" + (j- 1) + "*F" + (j - 1) + ";E" + j + "*F" + j + ")";
                workSheet.Cells[j, 7] = s;
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.10.2016, 08:47
Ответы с готовыми решениями:

Как создать вычисляемое поле
Как создать вычисляемое поле у Builder c++? Таблица додана из Acces компонентами ADO? Нужно один...

Создать вычисляемое поле Возраст
Всем привет! Как создать поле которое вычисляет возраст человека?

Как создать вычисляемое поле?
Здравствуйте. Подскажите как в базе данных (InterBase) создать такое вычисляемое поле в таблице:...

как создать вычисляемое поле Возраст
Как создать в запросе вычисляемое поле 'Возрас',, которое выводит результат в виде'13-10-23'. Что...

5
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
16.10.2016, 09:27 2
terror1992, попробуйте использовать при записи формул английский эквивалент имён функций:
C#
1
2
3
Range rng = workSheet.Range["C1"];
rng.Formula = "=SUM(B2:B4)"; // аналогично IF, AVG etc
string formula = rng.Formula;
0
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
16.10.2016, 10:02  [ТС] 3
Попробовал вот так:
C#
1
2
3
4
5
Excel.Range  rng = workSheet.Range[r];            
                rng.Formula = "=IF(A" + j + "=A" + (j - 1) + ";G" + j + "+E" + (j - 1) + "*F" + (j - 1) + ";E" + j + "*F" + j + ")"; ;
           //workSheet.Cells[j, 7] = s;// аналогично IF, AVG etc
string formula = rng.Formula;
workSheet.Cells[j, 7] = formula;
Выдало:Исключение типа "System.Runtime.InteropServices.COMException" возникло в mscorlib.dll, но не было обработано в коде пользователя

Дополнительные сведения: Исключение из HRESULT: 0x800A03EC
0
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
16.10.2016, 10:28 4
Лучший ответ Сообщение было отмечено terror1992 как решение

Решение

terror1992, оформляйте код тэгами.
Попробуйте без получения объекта Range напрямую засунуть формулу в ячейку. Предполагаю, что при формировании строки формулы могли возникнуть ошибки - попробуйте сначала сформировать формулу, потом вывести её куда-нибудь для проверки, а потом записать её напрямую в ячейку.
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 5
16.10.2016, 12:20  [ТС] 5
Попробовал так:
string s = "IF(A" + j + "=A" + (j - 1) + ";G" + j + "+E" + (j - 1) + "*F" + (j - 1) + ";E" + j + "*F" + j + ")"; ;
workSheet.Cells[j, 7].Formula = s;Формула нормально записалась, но не высчитывается( нужно в Excel перед формулой = подставить и считает). Иначе не работает. Как я понял операция присваивания в C# не воспринимает =

Добавлено через 33 минуты
Попробовал формулу sum, она работает, а IF нет

Добавлено через 17 минут
Всё, спасибо, разобрался. Проблема была в разделителе: вместо";" надо было использовать ","
0
.NET senior
440 / 358 / 137
Регистрация: 23.09.2016
Сообщений: 980
16.10.2016, 12:30 6
terror1992, не за что рад, что у Вас всё получилось
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.10.2016, 12:30
Помогаю со студенческими работами здесь

Сводная таблица: как создать вычисляемое поле?
Добрый вечер! Есть огромная таблица из 8 полей. 8 поле &quot;% выполнения&quot;, где цифры от 0,0 до 100,0....

Создать вычисляемое поле счетчик по значениям нескольких полей
У меня таблица и в таблице несколько поля. Я создал поле тип числовой и в правило проверки либо по...

Создать вычисляемое поле и вывести туда количество дней
Всем привет, помогите найти ошибку, нужно создать вычисляемое поле и вывести туда кол-во дней, я...

Создать вычисляемое поле в таблице для определения просроченных товаров
Имеется таблица с данными. В ней есть поле со сроком годности товара и дата изготовления. Как...

Создать вычисляемое поле в таблице на основе полей другой таблицы
Уважаемые форумчане, нужна помощь.. Надо выполнить расчет значений нескольких полей в таблице...

Вычисляемое поле
Помогите товарищи программеры. Столкнулся с такой проблемой: нужно создать вычисляемое поле в базе...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru