excelConvertRule - Конвертация полей базы для импорта-экспорта с Excel
По работе приходиться с Excel подключаться к сайту на MODX и выгружать с него или загружать в него данные. Постепенно наработался лучший путь. В excelConvertRule редактируются правила конвертации колонки excel в колонку базы MODX. В модуле vba modx_main подготовлены функции LoadToBase для загрузки с excel в MODX и LoadToExcel обратно. В файле core/components/excelconvertrule/users_editor.xlsm, для примера, сделан редактор пользователей MODX. Используя этот пакет можно быстро сформировать нужную выгрузку(загрузку) из любых таблиц MODX.
# Использование
В админке MODX зайти в приложение excelConvertRule и настроить правила конвертации.
Для доступа к приложению пользователю назначить политику excelConvertRuleEdit. И нужен getTables. Приложение на нем сделано.
В приложении создаем имя правил конвертации:
Параметры pdoTools задают данные которые выгружаются в excel. Их можно оставить пустымыми и задавать из excel. loadModel — загружают модели базы. Обязательно при загрузке в базу, если модель не стандартная для MODX. class — в какую таблицу базы загружаются данные.
В правилах конвертации задется Тип правила, Поле базы, Колонка excel, Подпись поля, Параметры.
Типы правил:
В строке 15 страна изменена с США на Россия и эта строка подсвечивается. При нажатии кнопки «Отправить изменения в базу» страна у пользователя перезапишется.
Для использования в редакторе Visual Basic открыть модуль vba modx_main задать адрес сайта, логин и пароль пользователя MODX с разрешением use_excelconvertrule (политика excelConvertRule).
ConvertRuleName — имя правила конвертации.
SheetName — лист excel на который загружать данные.
startRow — начальная строка.
endRow — случайно затесалась, но уже удалить сложно.
myProtectSheet — пароль защиты листа.
pdoTools — параметры pdoTools для выгрузки из базы. (Кому попало разрешение use_excelconvertrule не давать!).
ConvertRuleName — имя правила конвертации.
SheetName — лист excel с которого выгружать данные.
startRow — начальная строка.
endRow — конечная строка.
Если не задано startCol, то в поле D1 листа имя колонки в которой проверяется на не пустое значение!!!
иначе:
startCol — начальная колонка
endCol — конечная
testCol — имя колонки в которой проверяется на не пустое значение.
Так же можно использовать getRangeToJson_All, getRangeToJson_OnlyEdited и postJsonModx
action: getConvertRule, LoadToExcel, LoadToBase.
Обьект data преобразует в json строку.
функция возращает ответ MODX.
Из админки в приложении excelConvertRule или в ecrUpLoad можно также напрямую выгрузить в excel таблицу с заданным правилом конвертации (нужно pdoTools и соответствие полей базы клонкам excel).
UPD 22.10.2020
Добавил описания и скриншотов.
modstore.pro/packages/import-and-export/excelconvertrule
# Использование
В админке MODX зайти в приложение excelConvertRule и настроить правила конвертации.
Для доступа к приложению пользователю назначить политику excelConvertRuleEdit. И нужен getTables. Приложение на нем сделано.
В приложении создаем имя правил конвертации:
Параметры pdoTools задают данные которые выгружаются в excel. Их можно оставить пустымыми и задавать из excel. loadModel — загружают модели базы. Обязательно при загрузке в базу, если модель не стандартная для MODX. class — в какую таблицу базы загружаются данные.
В правилах конвертации задется Тип правила, Поле базы, Колонка excel, Подпись поля, Параметры.
Типы правил:
- text — преобразует колонку excel в поле базы и обратно как есть.
- detType- устарело но мне пока на рабочем сайте нужно
- date- преобразует колонку excel вида 05.10.2020 в поле базы 2020-10-05 и обратно.
- datetime — преобразует колонки excel в поле базы и обратно как есть., например Колонка excel C,D поле базы data_otgruzki. В C 05.10.2020 в D 10:00 преобразуется в 2020-10-05 10:00
- manager — преобразует колонку excel с именем пользователя (fullname) в поле базы id юзера и обратно.
- beznal — устарело.
- boolean — Использую сейчас text_to_other_text .
- text_to_other_text — преобразует колонку excel в поле базы и обратно согластно Правилам заданным в Параметрах правила. Например поле gender Параметры
{ "1": "Мужской", "2": "Женский" }
В строке 15 страна изменена с США на Россия и эта строка подсвечивается. При нажатии кнопки «Отправить изменения в базу» страна у пользователя перезапишется.
Для использования в редакторе Visual Basic открыть модуль vba modx_main задать адрес сайта, логин и пароль пользователя MODX с разрешением use_excelconvertrule (политика excelConvertRule).
Function LoadToExcel(ConvertRuleName As String, SheetName As String, Optional startRow As Long = 5, _
Optional endRow As Long = 3000, Optional myProtectSheet As String = "", _
Optional pdoTools As Object) As Boolean
LoadToExcel — имеет параметры:ConvertRuleName — имя правила конвертации.
SheetName — лист excel на который загружать данные.
startRow — начальная строка.
endRow — случайно затесалась, но уже удалить сложно.
myProtectSheet — пароль защиты листа.
pdoTools — параметры pdoTools для выгрузки из базы. (Кому попало разрешение use_excelconvertrule не давать!).
Function LoadToBase(ConvertRuleName As String, SheetName As String, Optional startRow As Long = 6, _
Optional endRow As Long = 3000, _
Optional startCol As String = "", Optional endCol As String = "", Optional testCol As String = "") As Boolean
LoadToBase — имеет параметры:ConvertRuleName — имя правила конвертации.
SheetName — лист excel с которого выгружать данные.
startRow — начальная строка.
endRow — конечная строка.
Если не задано startCol, то в поле D1 листа имя колонки в которой проверяется на не пустое значение!!!
иначе:
startCol — начальная колонка
endCol — конечная
testCol — имя колонки в которой проверяется на не пустое значение.
Так же можно использовать getRangeToJson_All, getRangeToJson_OnlyEdited и postJsonModx
Function postJsonModx(action As String, Optional data As Variant = Nothing, Optional ShowResponse As Boolean = False) As Object
Функция делает запрос на assets/components/excelconvertrule/action.php с одним из 3action: getConvertRule, LoadToExcel, LoadToBase.
Обьект data преобразует в json строку.
функция возращает ответ MODX.
Из админки в приложении excelConvertRule или в ecrUpLoad можно также напрямую выгрузить в excel таблицу с заданным правилом конвертации (нужно pdoTools и соответствие полей базы клонкам excel).
UPD 22.10.2020
Добавил описания и скриншотов.
modstore.pro/packages/import-and-export/excelconvertrule
Поблагодарить автора
Отправить деньги
Комментарии: 9
приходиться с Excel подключаться к сайту на MODXВы имеете в виду — из запущенного редактора microsoft Excel вы каким-то образом связываетесь с сайтом?
Да именно так. У директора расчет заказа на excel сделан. И база заказов на нем была. Но эксель затупил и базу заказов в MODX перенесли, а расчет по прежнему в экселе. Работа с заказом идет в экселе и связываться с базой из него удобней.
Спасибо. Но честно говоря даже не представляю как это возможно. Excel это закрытое программное обеспечение. Как можно его модифицировать, чтобы заставить например отправлять http запросы (ну или как там у вас организовано общение с базой.)
ЭЭ… у Excel есть макросы, а макросы работают на VBA. Язык программирования такой Visual Basic for Application. И из него вполне спокойно шлются http запросы :-). Плюс JSONConverter for VBA и вообще что хочешь делай :-).
Не знал. Про visual basic слышал, но считал что никто в мире им не пользуется)
Основной конкурент ERP CRM решений — Excel :-). Надо посчитать площядь изделий. Давайте в Excel формулы набъем, а то на калькуляторе уже достало считать. Потом добавили стоимость металла, расчет трудозатрат и через 5 лет самописная ERP на Excel :-)
Я когда увидел, как моя подруга работает в Excel, как во вспомогательном редакторе для построения огромного числа SQL запросов, то мягко говоря ох… л.
Не проще было в гугл-таблицы все перенести, а оттуда уже и тягать? Все же Экзель это анахронизм какой-то.
Не не проще. Макросов кучу директор уже сделал и эксель директор знает а что-то другое учить у него времени нет. Да и эксель еще не анохронизм. Он еще MODX переживет :-)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.