Работа с таблицей с помощью библиотеки EPPlus

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Привет, проблема состоит в том что мне нужно в таблицу Excel внести спаршенные данные, по разным листам причем создавая эти листы по необходимости.
Поэту созрело несколько вопросов:
1) Как проверить существует ли нужный мне лист в таблице или нет. Если нет, то создать его?
2) Как эффективней вносить данные в этот лист из переменных не сильно нагружая систему?
3) как сделать границы со всех сторон ячеек?
Может есть опыт у кого-то?
 

one

Client
Регистрация
22.09.2015
Сообщения
6 833
Благодарностей
1 275
Баллы
113

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113
  • Спасибо
Реакции: radv

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
  • Спасибо
Реакции: Mikhail B.

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 418
Благодарностей
5 454
Баллы
113

radv

Client
Регистрация
11.05.2015
Сообщения
3 789
Благодарностей
1 954
Баллы
113

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Да читал уже, не нашел как проверить существование определенного листа, если он существует то дописывать данные в него, если не существует то создать. Как создать лист и отформатировать его практически разобрался, а вот как сделать проверку его существования и как дописывать новые данные не пойму
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Вот накидал код как мог:
C#:
FileInfo result = new FileInfo(project.Directory + @"\result.xlsx"); //Путь к таблице
if (!result.Exists){  //Делаем проверку - если result.xlsx отсутствует - создаем таблицу
result = new FileInfo(project.Directory + @"\result.xlsx");
    }
//Инициализируем переменные

string parsing_mode = project.Variables["parsing_mode"].Value; // режим парсинга
string article_text = project.Variables["article_text"].Value; // текст статьи
string url_article = project.Variables["url_article"].Value; // ссылка на статью
string keywords_search = project.Variables["keywords_search"].Value; // ключевое слова для поиска
string article_likes = project.Variables["article_likes"].Value; // колл. лайков
string article_name = project.Variables["article_name"].Value; // Заголовок статьи
string article_date = project.Variables["article_date"].Value; // дата выхода статьи
string article_views = project.Variables["article_views"].Value; //Колл. просмотров
string article_full_reads = project.Variables["article_full_reads"].Value; // Колл. дочитываний
string article_time = project.Variables["article_time"].Value; // среднее время чтения
string article_comments = project.Variables["article_comments"].Value; // колл. коментариев
string url_img1 = project.Variables["url_img1"].Value; // путь к изображениям
string name_chennel = project.Variables["name_chennel"].Value; // имя канала
string name_list = ""; // имя листа для создания


using (ExcelPackage package = new ExcelPackage(result))
{
    // Проверяем режим парсинга для подстановки названия листов
    if (parsing_mode == "Парсить статьи из своего списка каналов"){
        name_list = name_chennel;
    }
    
    else {
        name_list = keywords_search;
    }
    var worksheet_chek = package.Workbook.Worksheets[name_list];
    
          
    //Формируем таблицу и лист
    ExcelWorksheet worksheet = package.Workbook.Worksheets.Add(name_list);//Добаваляем лист с названием ключевого слова или канала
    
//Добаваляем заголовки в лист
    
   worksheet.Cells[1, 1].Value = "Заголовок статьи";
    worksheet.Cells[1, 2].Value = "Дата выхода статьи";
    worksheet.Cells[1, 3].Value = "Колл. просмотров";
    worksheet.Cells[1, 4].Value = "Колл. дочитываний";
    worksheet.Cells[1, 5].Value = "Колл. коментариев";
    worksheet.Cells[1, 6].Value = "Колл. лайков";
    worksheet.Cells[1, 7].Value = "Среднее время чтения";
    worksheet.Cells[1, 8].Value = "Ссылка на статью";
    worksheet.Cells[1, 9].Value = "Текст статьи";
    worksheet.Cells[1, 10].Value = "Путь к изображениям";
    
    
    using (var range = worksheet.Cells[1, 1, 1, 10])
     {
        range.Style.Font.Color.SetColor(Color.White); // цвет текста
        range.Style.Font.Bold = true;// задаем жирность тексту
        range.Style.Fill.PatternType = ExcelFillStyle.Solid; //задаем сплошную заливку цветом
        range.Style.Fill.BackgroundColor.SetColor(Color.Green); // цвет заливки
        
    }
     worksheet.Row(1).Style.Font.Size = 13; //Установка размера шрифта в первой строке
     worksheet.Row(1).Style.HorizontalAlignment = ExcelHorizontalAlignment.Center; // Центруем текст первой строке
     worksheet.Cells[worksheet.Dimension.Address].AutoFitColumns();// Задаем авто выравнивание столбцов по содержимому
     worksheet.View.FreezePanes(2,1);// Закрепляем верхнию строку
    //Формируем таблицу и листы
    }
    
    //Записываем данные в таблицу
    worksheet.Cells[2, 1].Value = article_name;
    worksheet.Cells[2, 2].Value = article_date;
    worksheet.Cells[2, 3].Value = article_views;
    worksheet.Cells[2, 4].Value = article_full_reads;
    worksheet.Cells[2, 5].Value = article_comments;
    worksheet.Cells[2, 6].Value = article_likes;
    worksheet.Cells[2, 7].Value = article_time + "мин";
    worksheet.Cells[2, 8].Value = url_article;
    worksheet.Cells[2, 9].Value = article_text;
    worksheet.Cells[2, 10].Value = url_img1;
    
    package.Save();
    
}
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Не могу еще пока найти как сделать вот такие границы вокруг ячеек
67767
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 789
Благодарностей
1 954
Баллы
113
Тогда читайте документацию у разработчика этой dll, там должны быть примеры использования методов библиотеки.
Я на основе доков и примеров все делал плюс используя всплывающие подсказки для dll. Можете скачать исходники с гитхаба, там тоже вроде примеры есть в коде.
 

nicanil

Client
Регистрация
06.03.2016
Сообщения
2 242
Благодарностей
1 820
Баллы
113
Не могу еще пока найти как сделать вот такие границы вокруг ячеек
Нашёл вот такой вариант:
C#:
// Таблица table.xlsx должна быть рядом с файлом проекта.
FileInfo template = new FileInfo(project.Directory + @"\table.xlsx");

using (var exPack = new ExcelPackage(template))
{
    // Выбираем необходимый Лист.
    ExcelWorksheet ws = exPack.Workbook.Worksheets[1];

    // Выделяем диапазон ячеек, для которых установим новые границы.
    // Нумерация с 1 (не ноля!).
    // Первые два числа - рядок и колонка с которых начинается диапазон.
    // Третье и четвёртое число - рядок и колонка, на которых заканчивается диапазон.
    using (ExcelRange range = ws.Cells[1, 1, 7, 9])
    {
        range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
    }
    
    // Сохраняем Excel файл.
    exPack.Save();
}
 

cherus09

Client
Регистрация
10.10.2016
Сообщения
172
Благодарностей
14
Баллы
18
Нашёл вот такой вариант:
C#:
// Таблица table.xlsx должна быть рядом с файлом проекта.
FileInfo template = new FileInfo(project.Directory + @"\table.xlsx");

using (var exPack = new ExcelPackage(template))
{
    // Выбираем необходимый Лист.
    ExcelWorksheet ws = exPack.Workbook.Worksheets[1];

    // Выделяем диапазон ячеек, для которых установим новые границы.
    // Нумерация с 1 (не ноля!).
    // Первые два числа - рядок и колонка с которых начинается диапазон.
    // Третье и четвёртое число - рядок и колонка, на которых заканчивается диапазон.
    using (ExcelRange range = ws.Cells[1, 1, 7, 9])
    {
        range.Style.Border.Top.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Bottom.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Left.Style = ExcelBorderStyle.Thin;
        range.Style.Border.Right.Style = ExcelBorderStyle.Thin;
    }
   
    // Сохраняем Excel файл.
    exPack.Save();
}
Спасибо! Попробую.
 

ParadoxRU

Client
Регистрация
04.09.2019
Сообщения
19
Благодарностей
6
Баллы
3
  • Спасибо
Реакции: phoenixs

Vit83

Новичок
Регистрация
06.05.2021
Сообщения
1
Благодарностей
3
Баллы
1
  • Спасибо
Реакции: Soly, Azakim и phoenixs

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