Quad.Wiki
Конвертация CSV в XLSX или XLSX в CSV
CSV → XLSX
В случае, если по каким-то причинам вы не можете загрузить правильно CSV файл при помощи этой инструкции Импорт CSV , например, Excel заменяет числа на даты или некорректно обрабатывает текст, загружая информацию с переносами не в одну ячейку, а в несколько строк, можно использовать Libre Office.
1. Скачайте и установите программу https://ru.libreoffice.org/
2. Добавьте действие в Quad.Magic “Выполнить файл и дождаться завершения” в группе действий обновления ПЕРЕД действием импорта обновленных прайсов.
3. В Настройка 1 действия укажите путь, куда будет сохранен исполняемый скрипт, который преобразует файл. Можно указать путь X:\Quad Solutions\files\csvtoxlsx.bat , где X:\Quad Solutions - путь к папке с программой на вашем компьютере
4. В Настройка 4 добавить следующий текст скрипта:
set CSVPath="f:\Quad Solutions\files\2_ price\param.csv"
set OutPath="f:\Quad Solutions\files\2_ price"
"C:\Program Files\LibreOffice\program\soffice.exe" ^
--headless --infilter="csv:59,34,UTF8" ^
--convert-to xlsx:"Calc MS Excel 2007 XML" ^
--outdir %OutPath% %CSVPath%
в первой строке замените текст f:\Quad Solutions\files\2_ price\param.csv
на путь к вашему файлу CSV, включая имя файла
путь должен быть обязательно в двойных кавычках, если в нем есть пробелы
вместо f:\Quad Solutions\files\2_ price
укажите путь к папке, куда будет сохранен файл XLSX, т.е. файл результатов
путь папки результатов обязательно должен быть без обратного слеша на конце (\)
файл результатов сохраняется с тем же именем, что и входной файл CSV, только с расширением XLSX - например файл params.csv сохранится с названием params.xlsx, указать другое название нельзя
C:\Program Files\LibreOffice\program\soffice.exe
- в третьей строке проверьте, что путь к файлу soffice.exe
правильный. Это должен быть путь в папку, куда вы установили Libre Office.
--infilter="csv:59,34,UTF8"
- четвертая строка содержит настройки входного файла CSV
первый параметр 59 - значит что разделитель в файле “точка с запятой”. если у вас разделитель “запятая”, то нужно заменить это число на 44
знак Tab (табуляция): 09 (если не получится, то попробуйте просто 9)
коды других символов можно посмотреть в этой таблице
второй параметр 34 - символ кавычек, который используется в файле в начале и конце текстовых значений, содержащих переносы строк. 34 это “двойные кавычки”, коды других символов можно посмотреть в таблице выше.
третий параметр UTF8 - формат файла. Если у вас обычный файл с русскими буквами, то нужно поменять на WIN1251
5. Запустите задание, если все ок, то вы увидите такое окно
и когда оно пропадет, в папке результатов должен появиться преобразованный файл.
XLSX → CSV
Если у вас есть прайс поставщика в формате Excel, который программа не может открыть и на этапе открытия выдает ошибку, что приводит к остановки загрузки прайса, то можно попробовать преобразовать прайс из Excel в CSV еще до загрузки его в программу.
Например, когда при импорте прайса выскакивает такое окно
Для этого вам так же нужно установить Libre Office.
1. Сделайте первые 3 пункта из этой инструкции, указанные в разделе CSV → XLSX.
2. В Настройка 4 добавить следующий текст скрипта:
set CSVPath="f:\Quad Solutions\files\2_ price\tehnoprofile.xlsx"
set OutPath="f:\Quad Solutions\files\2_ price"
"C:\Program Files\LibreOffice\program\soffice.exe" ^
--headless --convert-to csv:"Text - txt - csv (StarCalc)":59,34,UTF8,1,,0,false,true,false,false,false,-1 %CSVPath% ^
--outdir %OutPath%
В первой строке указывается путь к преобразовываемому файлу
Во второй строке - папка, куда будет сохранен результат (папку указывать без слеша на конце)
В результате работы этого скрипта будет сформированы файлы в формате CSV (кодировка UTF-8), для каждого листа свой отдельный файл (в названии файла будет указано название листа). Если в прайсе только 1 лист, то сформирован будет только 1 файл CSV.
Пример исходного файла
Результат:
Обратите внимание, что результат сохраняется в кодировке UTF-8 и полученный файл нужно загружать с использованием макроса Импорт CSV
Или же сделать обратное преобразование из CSV в XLSX по этой инструкции в п. CSV → XLSX