Эта статья описывает скрипт, сохраняющий таблицу Excel в файлы формата CSV, причём если таблица содержит несколько листов (страниц), то каждый из них будет сохранён в отдельном CSV файле.

Для сравнения, функция экспорта в самом Excel записывает в CSV только один лист.

А используя показанный ниже скрипт, можно выгружать в CSV все листы, то есть даже большую книгу (workbook).

Почему CSV

Файлы формата CSV хороши своей универсальностью – они поддерживаются в самых разных программах, и для них даже есть ODBC драйвер, позволяющий выполнять SQL запросы.

Скрипт экспорта

Построен на использовании метода SaveAs, который вызывается для каждого видимого листа таблицы.

var xlCSV = 6;
var xlCSVMac = 22;
var xlCSVMSDOS = 24;
var xlCSVUTF8 = 62;
var xlCSVWindows = 23;

function excel_to_csv(filename,format)
{
    var fso = WScript.CreateObject("Scripting.FileSystemObject");

    var excel = WScript.CreateObject("Excel.Application");
    var workbook = excel.Workbooks.Open(filename, 0, true);

    for ( var i = 1; i <= workbook.Worksheets.Count; ++i ) 
        if ( workbook.Worksheets(i).Visible ) {
            WScript.Echo(workbook.Worksheets(i).Name);
            workbook.Worksheets(i).SaveAs(fso.GetParentFolderName(filename) + "\\" + 
                workbook.Worksheets(i).Name, format);
    }
    workbook.Close(false);
}

Первый параметр — это имя Excel файла.

Второй параметр позволяет выбрать кодировку для экспорта. Удобно, что можно выбрать кодировку просто параметром, а не преобразовывать потом отдельно.

Запуск из другого скрипта

Другой скрипт просто вызывает функцию excel_to_csv с необходимыми аргументами.

excel_to_csv("C:\\ProgramData\\MyProgram\\data.xlsx", xlCSVUTF8);

Скрипты, конечно, должны быть объединены через wsf.

Запуск из bat файла или командной строки

Производится, как обычно, через cscript с передачей параметров в командной строке:

cscript //nologo excel-to-csv.js %ProgramData%\MyProgram\data.xlsx 23

Кодировка для экспорта передается числом, а не переменной.

Если Excel файл находится в текущем каталоге, можно написать с %CD%:

cscript //nologo excel-to-csv.js %cd%\data.xlsx 23

Особенности скрипта

Есть несколько нюансов, которые необходимо учитывать.

  • Необходимо указывать полный путь к Excel файлу. По умолчанию, Excel ищет файл в документах, а не в текущем каталоге.
  • Файлы CSV сохраняются в тот же каталог, где находится файл таблицы Excel.
  • Скрипт обрабатывает только видимые листы таблицы. При необходимо это условие можно удалить.
  • При сохранении в UTF-8 метод SaveAs всегда вставляет BOM. Если это мешает, то потребуется дополнительное преобразование экспортированных файлов, например, программой nhrt.

Зависимости

Скрипт использует компонент Excel.Application, поэтому на компьютере должен быть установлен Microsoft Excel.

Файлы для скачивания

Скачать скрипт экспорта Excel в csv с Яндекс.Диска

Скачать все скрипты с Яндекс.Диска

Полезные ссылки

Worksheet.SaveAs method (Excel)

XlFileFormat enumeration (Excel)

Экспорт таблицы Excel в CSV в командной строке
Метки:            

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *