Работа с Exel таблицей через C#

Salat

Client
Регистрация
15.01.2022
Сообщения
43
Благодарностей
1
Баллы
8
Подскажите люди добрые в какую сторону копать.

Записываю данные на вторую вкладку Exel таблицы через этот код

string xlsx_path = project.Variables["xlsx_path"].Value;
var bk_1 = new ExcelPackage(new FileInfo(xlsx_path));
var nameList_2 = project.Variables["nameList_2"];
ExcelWorksheet st_2 = bk_1.Workbook.Worksheets[project.Variables["nameList_2"].Value];
st_2.SetValue(int.Parse(project.Variables["client_place"].Value),int.Parse(project.Variables["clientplace2"].Value), project.Variables["NameAkk"].Value);
bk_1.Save();


В проекте много циклов, первый проходит на ура. Когда начинается второй цикл с этой таблицей на этом кубике выдает такую ошибку.

Выполнение действия CSharp OwnCode: Пишем имя на второй лист самая новая проверенна. Данный ключ отсутствует в словаре.
Сбойное действие: Пишем имя на второй лист самая новая проверенна

Если открыть таблицу и закрыть. Тогда кубик срабатывает без ошибки.
 

lokiys

Moderator
Регистрация
01.02.2012
Сообщения
4 770
Благодарностей
1 182
Баллы
113

WebBot

Client
Регистрация
04.04.2015
Сообщения
1 719
Благодарностей
1 377
Баллы
113

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 007
Благодарностей
538
Баллы
113
Подскажите люди добрые в какую сторону копать.

Записываю данные на вторую вкладку Exel таблицы через этот код

string xlsx_path = project.Variables["xlsx_path"].Value;
var bk_1 = new ExcelPackage(new FileInfo(xlsx_path));
var nameList_2 = project.Variables["nameList_2"];
ExcelWorksheet st_2 = bk_1.Workbook.Worksheets[project.Variables["nameList_2"].Value];
st_2.SetValue(int.Parse(project.Variables["client_place"].Value),int.Parse(project.Variables["clientplace2"].Value), project.Variables["NameAkk"].Value);
bk_1.Save();


В проекте много циклов, первый проходит на ура. Когда начинается второй цикл с этой таблицей на этом кубике выдает такую ошибку.

Выполнение действия CSharp OwnCode: Пишем имя на второй лист самая новая проверенна. Данный ключ отсутствует в словаре.
Сбойное действие: Пишем имя на второй лист самая новая проверенна

Если открыть таблицу и закрыть. Тогда кубик срабатывает без ошибки.
Во первых код вставлять с помощью вставки кода, а то это не читабельно, а второе, подобные конструкции надо в юсинг заворачивать, что бы после работы с таблицей происходило ее закрытие, у вас в конце вызывается метод Save, готов предположить что там же есть метод Close или Dispose типа такого надо в конце сниппета добавить

C#:
bk_1.Close();
Или
bk_1.Dispose();
А по хорошему это как то так должно выглядеть
C#:
string xlsx_path = project.Variables["xlsx_path"].Value;

           using(var bk_1 = new ExcelPackage(new FileInfo(xlsx_path)))

           {

            var nameList_2 = project.Variables["nameList_2"];

            ExcelWorksheet st_2 = bk_1.Workbook.Worksheets[project.Variables["nameList_2"].Value];

            st_2.SetValue(int.Parse(project.Variables["client_place"].Value),int.Parse(project.Variables["clientplace2"].Value), project.Variables["NameAkk"].Value);

            bk_1.Save();

           }
 
Последнее редактирование:
  • Спасибо
Реакции: Salat

Salat

Client
Регистрация
15.01.2022
Сообщения
43
Благодарностей
1
Баллы
8
Во первых код вставлять с помощью вставки кода, а то это не читабельно, а второе, подобные конструкции надо в юсинг заворачивать, что бы после работы с таблицей происходило ее закрытие, у вас в конце вызывается метод Save, готов предположить что там же есть метод Close или Dispose типа такого надо в конце сниппета добавить

C#:
bk_1.Close()
Или
bk_1.Dispose()
А по хорошему это как то так должно выглядеть
C#:
string xlsx_path = project.Variables["xlsx_path"].Value;

           using(var bk_1 = new ExcelPackage(new FileInfo(xlsx_path)))

           {

            var nameList_2 = project.Variables["nameList_2"];

            ExcelWorksheet st_2 = bk_1.Workbook.Worksheets[project.Variables["nameList_2"].Value];

            st_2.SetValue(int.Parse(project.Variables["client_place"].Value),int.Parse(project.Variables["clientplace2"].Value), project.Variables["NameAkk"].Value);

            bk_1.Save();

           }
Спасибо завтра проверю. Еще вопрос может был у кого опыт или есть понимание. Можно в этот код Google таблицу запихать?
 

Sherminator

Client
Регистрация
10.09.2021
Сообщения
1 007
Благодарностей
538
Баллы
113
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)