Загрузка таблицы CSV с диска в память программы
Достаточно просто указать имя таблицы для хранения ее в памяти и путь к файлу на диске для ее загрузки:
1 2 3 4 | [LOADCSV(имя таблицы)]путь к файлу CSV[/LOADCSV] [LOADCSV(1)]C:\Content\article_all_91.csv[/LOADCSV] [LOADCSV(2)]C:\Content\article.csv[/LOADCSV] [LOADCSV(3)]C:\Content\article121415.csv[/LOADCSV] |
Загрузка таблиц будет производиться только 1 раз для каждого файла при запуске парсинга контента! Так что можно смело оставлять макросы [LOADCSV] в любом месте шаблона вывода!
Чтение данных из загруженной таблицы CSV
Для взятия содержимого указанной ячейки используйте макрос [GETCSVDATA]
1 2 3 4 5 6 7 8 9 10 11 | [GETCSVDATA(имя таблицы)]Y (номер ряда таблицы)|X (номер столбца таблицы)[/GETCSVDATA] [GETCSVDATA(1)]1|1[/GETCSVDATA] -> возьмет содержимое ячейки с индексом 1/1 (первый ряд, первый столбец) [GETCSVDATA(1)]1|2[/GETCSVDATA] -> возьмет содержимое ячейки с индексом 1/2 (первый ряд, второй столбец) [GETCSVDATA(1)]3|возраст[/GETCSVDATA] -> возьмет содержимое ячейки на пересечении третьего ряда и столбца с именем "возраст" [GETCSVDATA(1)]cl164708|возраст[/GETCSVDATA] -> возьмет содержимое ячейки на пересечении ряда с именем "cl164708" и столбца с именем "возраст" [GETCSVDATA(1)]1|0[/GETCSVDATA] -> возьмет весь первый ряд ячеек (при индексе столбца = 0) [GETCSVDATA(1)]2|0[/GETCSVDATA] -> возьмет весь второй ряд ячеек (при индексе столбца = 0) [GETCSVDATA(1)]0|5[/GETCSVDATA] -> возьмет весь пятый столбец (при индексе ряда = 0) [GETCSVDATA(1)]1+1|1[/GETCSVDATA] -> возьмет содержимое ячейки с индексом 2/1 (в индексах Y и X поддерживаются операции: "+", "-", "*", "/") |
Запись данных в ячейки CSV-файла
Добавление данных в загруженные таблицы CSV осуществляется с помощью макроса [PUTCSVDATA]. Сохранение изменений открытых CSV-файлов на диск производится при завершении процедуры парсинга контента.
1 2 3 4 5 6 7 8 | [PUTCSVDATA(1)]10|возраст|[TOPASTE]текст[/PUTCSVDATA] -> вставит "текст" в ячейку на пересечении 10 ряда и столбца с именем "возраст" (при этом произойдет перезапись существующего текста ячейки) [PUTCSVDATA(1)]10|5|{notovervrite}[TOPASTE]текст[/PUTCSVDATA] -> вставит "текст" в ячейку на пересечении 10 ряда и 5 столбца (если в ячейке будет текст, то он не перезапишется, так как есть параметр {notovervrite}) [PUTCSVDATA(1)]10|5|{merge}{br}[TOPASTE]текст[/PUTCSVDATA] -> вставит "текст" в ячейку на пересечении 10 ряда и 5 столбца (так как есть параметр {merge}, "текст" будет ДОБАВЛЕН к текущему содержимому ячейки через указанный разделитель {br} (перенос строки)) Используйте в координатах оператор {lastcolumn_orig}, который выведет номер последнего столбца CSV файла: [PUTCSVDATA(1)]10|{lastcolumn_orig}+1|[TOPASTE]текст[/PUTCSVDATA] -> вставит "текст" в ячейку на пересечении 10 ряда и последнего столбца + 1 (если индекс последнего столбца = 5, то "текст" вставится в шестой столбец (так как есть +1)) |
Получение координат нужных ячеек для использования их в макросах [GETCSVDATA] и [PUTCSVDATA]
Координаты нужных ячеек (которые содержат определенный текст) можно получать с помощью макроса [GETCSVCOORD] (его нужно использовать вместо Y или X координат в макросах [GETCSVDATA] и [PUTCSVDATA])
1 2 3 4 5 6 7 8 9 | [GETCSVDATA(1)] [GETCSVCOORD(1)]Y|5|[EXACT]серебро[/GETCSVCOORD] |33[/GETCSVDATA] -> тут вместо Y используется [GETCSVCOORD], который найдет и выведет номер ряда ячейки с текстом "серебро" из пятого столбца [GETCSVCOORD(1)]Y|10|[EXACT]серебро[/GETCSVCOORD] -> выведет координату Y (номер ряда) для ячейки из 10 столбца, которая содержит текст "серебро" [GETCSVCOORD(1)]Y|материал|[EXACT]серебро[/GETCSVCOORD] -> выведет координату Y для ячейки из столбца с именем "материал", которая содержит текст "серебро" [GETCSVCOORD(1)]5|X|[EXACT]серебро[/GETCSVCOORD] -> выведет координату X (номер столбца) для ячейки из 5 ряда, которая содержит текст "серебро" Уберите параметр [EXACT] для того, чтобы искать частичное совпадение текста ячейки: [GETCSVCOORD(1)]5|X|серебро[/GETCSVCOORD] -> выведет координату X (номер столбца) для ячейки из 5 ряда, которая содержит в своем тексте подстроку "серебро" |
Спасибо Сергей.
Вот это реально круто, теперь только осталось научиться этим пользоваться.
А для чего это лучше применять?
Пожалуйста.
Например, дополнить CSV файл, полученный от поставщика.
Реально, не подумал! Спасибо.
Видеоуроков бы, если можно.
Спасибо! В планах.
Огромное спасибо! Согласен с Djah, осталось научиться)
Спасибо!