Excel , EPPlus , работа с изображениями.

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
EPPlus -библиотека для работы с MS Excel.

В составе прикрепленного архива 2 открытых шаблона и файловая обвязка для тестов. Мин версия ZP 7.4.0.0

Шаблон Excel_C#.zp - C# cниппеты для работы с библиотекой Excel-я - EPPlus.
Подключение, чтение, запись, стили, дизайн, форматирование. Работа с : изображениями, ссылками, датами и комментариями.Подгонка, перенос текста, шрифты, RichText и прочее.

Шаблон Pica.zp - пример работы с изображениями, добавляет картинки в Excel.
Пример работы на видео:

Подключаем EPPlus.
Кладем библиотеку сюда: C:\Program Files\ZennoLab\RU\версия постера\номер билда\Progs\ExternalAssemblies\EPPlus.dll

Доб. ccылки из GAK , указываем EPPlus.
97239


Прописываем юзинги:
C#:
using OfficeOpenXml;
using OfficeOpenXml.Style;
using OfficeOpenXml.Table;
using OfficeOpenXml.ConditionalFormatting;
using System.Drawing;
using OfficeOpenXml.Drawing;
using OfficeOpenXml.Drawing.Vml;
97240



97241


Cоздаем новый шаблон, в нем C# кубик , копируем туда код из кубика "Подключение", файловые пути меняем на свои, далее пишем исходя из своей задачи опираясь на исходники.


Как мониторить файл Excel-я?
Довольно часто при работе с таблицами Excel-я требуется чекать выполнение шаблона в режиме онлайн,особенно когда на табле строится логика шаблона или просто тестируешь новый шаб.
В notepad++ для этих целей есть - Мониторинг (tile -f), лежит во вкладке Вид. Майки зажопили такой финт для Excel-я, зато не поленились и добавили Кирилицу в формулы, ну как добавили, нагло приказали: - Юзаешь православный Excel, делай формулы на кирилице,кодить на кирилице - какая прелесть, привет прогерам желтой программы. Я как и многие потому и сижу на eng версии.

Для себя открыл 2 костыля:
1. Ручками - добавить кнопку Toggle : жмем на треугольник или через File Options - Quick Access Toolbar - Popular Commands - More Commands - Toggle Read Only

2. Макросами через гор.клавиши:
Добавляем 2 этих макроса в Личную книгу макросов:
C#:
Sub Book_Read_Y()
'Только чтение
On Error Resume Next 'убираем долбанное окно ошибки
ActiveWorkbook.ChangeFileAccess Mode:=xlReadOnly
End Sub

Sub Book_Write_U()
'Чтение и запись
On Error Resume Next 'убираем долбанное окно ошибки
ActiveWorkbook.ChangeFileAccess Mode:=xlReadWrite
End Sub
Чтение я поставил на Ctrl+Y , запись на Ctrl+U, далее забиндил эти сочетания на Tab(only Excel) в Key Manager-e. Костыльно,но жить можно.
97242

97243

97244


Если вы еще ни разу не пользовались ЛКМ, то изначально файл Personal.xlsb не существует. Самый легкий способ его создать - это записать рекордером какой-нибудь ненужный бессмысленный макрос, но указать в качестве места для его хранения Личную Книгу Макросов. Включаем вкладку Developer\Разработчик - Record macro\Запись макроса - сохранияем в ЛКМ.

97246


Можно еще создать ярлык ,
прописать пути до Офиса и книги , например:
C#:
например: "C:\Program Files (x86)\Microsoft Office\Office15\EXCEL.EXE" /r "C:\WRK\EPPlus\Конкурс шаблонов № 9\Pica.xlsx"
Книга будет открываться только для чтения.
97247
 

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:
Регистрация
26.05.2020
Сообщения
495
Благодарностей
172
Баллы
43
97263


Лайк за старания )
 

dmitlife

Client
Регистрация
25.04.2019
Сообщения
43
Благодарностей
26
Баллы
18
В составе прикрепленного архива 2 открытых шаблона и файловая обвязка для тестов. Мин версия ZP 7.4.0.0
Похоже архив забыли приложить с шаблонами. Не вижу его
 
  • Спасибо
Реакции: che100

Mikhail B.

Client
Регистрация
23.12.2014
Сообщения
14 415
Благодарностей
5 454
Баллы
113
Шаблон Pica.zp - пример работы с изображениями.
А что делает? Описание добавь какое нибудь. Что именно с изображениями делается, заливаются картинки в эксель?
 
  • Спасибо
Реакции: che100

radv

Client
Регистрация
11.05.2015
Сообщения
3 788
Благодарностей
1 952
Баллы
113
Полезная инфа. :ay: Кто то как раз искал подробности по работе с этой либой. :az:
 
  • Спасибо
Реакции: che100

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
А как переместить картинки из одной таблицы в другую средствами epplus? Можете показать или обьснить?
 
  • Спасибо
Реакции: djaga

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
А как переместить картинки из одной таблицы в другую средствами epplus? Можете показать или обьснить?
Сходу не скажу, так не делал, попробую , по результатам отпишусь.
 

SERG454

Client
Регистрация
14.10.2021
Сообщения
145
Благодарностей
143
Баллы
43
Спасибо , как раз недавно , был нужен подобный функционал
 
  • Спасибо
Реакции: che100

Sanekk

Client
Регистрация
24.06.2016
Сообщения
999
Благодарностей
390
Баллы
63
Майки зажопили такой финт для Excel-я, зато не поленились и добавили Кирилицу в формулы, ну как добавили, нагло приказали: - Юзаешь православный Excel, делай формулы на кирилице,кодить на кирилице - какая прелесть, привет прогерам желтой программы. Я как и многие потому и сижу на eng версии.
есть,такое... поржал :D
За статью спасибо, в закладки8-)
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
А как переместить картинки из одной таблицы в другую средствами epplus? Можете показать или обьснить?
Получил в переменную внутри C# кубика, но скопировать или сбросить на диск не получилось. (
Пока времени нет разбираться , но задача интересная.

EPPlus, получить изображение.
C#:
//Формируем путь до Excel книги (Директория шаблона\Pica.xlsx)
string xlsx_path = project.Directory + @"\A.xlsx";
//Подкл.1-й лист книги
var bk_1 = new ExcelPackage(new FileInfo(xlsx_path));
ExcelWorksheet st_1 = bk_1.Workbook.Worksheets[1];
var pic = st_1.Drawings["3D Smile 1.jpg"] as ExcelPicture;
return pic.Image;
Костыль.
Все xlsx файлы являются zip-файлами. Можно скопировать/переименовать расширение .xlsx в .zip , внутри которого
в xl/media лежат картинки. Жаль что они теряют свои имена. Но их можно спарсить из xml .
 

WebBot

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

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
Получил в переменную внутри C# кубика, но скопировать или сбросить на диск не получилось. (
Пока времени нет разбираться , но задача интересная.

EPPlus, получить изображение.
C#:
//Формируем путь до Excel книги (Директория шаблона\Pica.xlsx)
string xlsx_path = project.Directory + @"\A.xlsx";
//Подкл.1-й лист книги
var bk_1 = new ExcelPackage(new FileInfo(xlsx_path));
ExcelWorksheet st_1 = bk_1.Workbook.Worksheets[1];
var pic = st_1.Drawings["3D Smile 1.jpg"] as ExcelPicture;
return pic.Image;
Костыль.
Все xlsx файлы являются zip-файлами. Можно скопировать/переименовать расширение .xlsx в .zip , внутри которого
в xl/media лежат картинки. Жаль что они теряют свои имена. Но их можно спарсить из xml .
Спасибо, все нашёл. Оказалось не сложно.)
Вопрос закрыт.
 

Sho

Активный пользователь
Регистрация
08.08.2022
Сообщения
100
Благодарностей
51
Баллы
28
@che100, Кстати, какую версию epplus использовать, чтобы ZP не ругалась? Последнии вроде быстрее работают, но зависимости конфликтуют с ZP.
 
  • Спасибо
Реакции: djaga и che100

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
А скорость работы по сравнению со стандартным зенновским решением для работы с таблицами не замеряли случаем?
Не замерял. Зенновскими картинки не добавишь и с листами вроде не умеет работать.


@che100, Кстати, какую версию epplus использовать, чтобы ZP не ругалась? Последнии вроде быстрее работают, но зависимости конфликтуют с ZP.
4.5.3.2 Добавил в архив, перекачай.
 

Danilbj

Client
Регистрация
19.04.2021
Сообщения
9
Благодарностей
0
Баллы
1
Давно был запрос как вставлять картинки в таблицы эксель
@che100 пробую твой шаб на своей таблице(её скачал из рабочей почты). Выдаёт ошибку
Выполнение действия CSharp OwnCode: Вставляем пикчу.. Worksheet position out of range.

В чём может быть проблема?
 

Danilbj

Client
Регистрация
19.04.2021
Сообщения
9
Благодарностей
0
Баллы
1
Выполнение действия CSharp OwnCode: Вставляем пикчу.. Данный ключ отсутствует в словаре.

Точнее вот ошибка
 

Danilbj

Client
Регистрация
19.04.2021
Сообщения
9
Благодарностей
0
Баллы
1
При этом если использую твою таблицу, всё работает корректно.

Возможно в моей таблице стоит какая-то защита. Не подскажешь, где искать ответ? или как снять возможные защиты таблицы?
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63
При этом если использую твою таблицу, всё работает корректно.

Возможно в моей таблице стоит какая-то защита. Не подскажешь, где искать ответ? или как снять возможные защиты таблицы?
Может быть названия листов отличаются .
 
  • Спасибо
Реакции: samorestter и ermoladan

ZSHab

Client
Регистрация
29.10.2014
Сообщения
220
Благодарностей
22
Баллы
18
Не замерял. Зенновскими картинки не добавишь и с листами вроде не умеет работать.



4.5.3.2 Добавил в архив, перекачай.
Последняя доступная версия в Nuget 6.1.2.0
У вас не получилось с ней работать? Дальше версии 4.5.3.2 не получается подключить?
 

ZSHab

Client
Регистрация
29.10.2014
Сообщения
220
Благодарностей
22
Баллы
18
Последняя доступная версия в Nuget 6.1.2.0
У вас не получилось с ней работать? Дальше версии 4.5.3.2 не получается подключить?
Ссылка на Nuget пакет (не получилось отредактировать предыдущий пост):
 

che100

Client
Регистрация
18.04.2017
Сообщения
808
Благодарностей
503
Баллы
63

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