Quad.Wiki

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 11 Next »

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

коды других символов можно посмотреть в этой таблице

второй параметр 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

  • No labels