Универсальный конвертер Excel/CSV в JSON (Node.js)

Часто нужно импортировать данные из EXCEL в SimpleOne

С целью решения данной проблемы представляю конвертер Excel в JSON

Инструкция

Универсальный конвертер Excel/CSV в JSON (Node.js)

Простая программа для преобразования данных из Excel (.xlsx) или CSV (.csv) файлов в JavaScript-массив объектов в формате JSON.

:clipboard: Быстрый старт

  1. Создайте папку проекта и установите зависимости:
mkdir excel-to-json
cd excel-to-json
npm init -y
npm install xlsx csv-parser
  1. Создайте файл convert.js и скопируйте этот код:
const xlsx = require('xlsx');
const fs = require('fs');
const csv = require('csv-parser');

const inputFile = './input'; // Без расширения

function convertXlsx(filePath) {
  const workbook = xlsx.readFile(filePath);
  const sheetName = workbook.SheetNames[0];
  const sheet = workbook.Sheets[sheetName];
  return xlsx.utils.sheet_to_json(sheet, { defval: "" });
}

function convertCsv(filePath) {
  return new Promise((resolve) => {
    const results = [];
    fs.createReadStream(filePath)
      .pipe(csv())
      .on('data', (data) => results.push(data))
      .on('end', () => resolve(results));
  });
}

async function main() {
  let data;
  
  if (fs.existsSync(`${inputFile}.xlsx`)) {
    console.log('Обнаружен XLSX файл, конвертируем...');
    data = convertXlsx(`${inputFile}.xlsx`);
  } 
  else if (fs.existsSync(`${inputFile}.csv`)) {
    console.log('Обнаружен CSV файл, конвертируем...');
    data = await convertCsv(`${inputFile}.csv`);
  }
  else {
    console.log('❌ Ошибка: Не найден файл input.xlsx или input.csv');
    return;
  }

  const jsOutput = `const data = ${JSON.stringify(data, null, 2)};\n\nmodule.exports = data;`;
  fs.writeFileSync('output.js', jsOutput);
  console.log(`✅ Готово! Конвертировано ${data.length} записей в output.js`);
}

main();
  1. Поместите ваш файл данных в папку проекта и назовите его:

    • input.xlsx для Excel-файлов
    • ИЛИ input.csv для CSV-файлов
  2. Запустите конвертацию:

node convert.js
  1. Получите результат в файле output.js

:pushpin: Особенности

  • Автоматически определяет тип файла (XLSX или CSV)
  • Поддерживает оба формата без изменения кода
  • Простое использование - только один входной файл
  • Чистый вывод в формате JavaScript модуля

Пример CSV файла (input.csv):

id,name,department
1,Иван,IT
2,Ольга,Маркетинг

Пример результата (output.js):

const data = [
  {
    "id": "1",
    "name": "Иван",
    "department": "IT"
  },
  {
    "id": "2",
    "name": "Ольга",
    "department": "Маркетинг"
  }
];

module.exports = data;
3 лайка

Спасибо, а чем вызвана потребность импортировать данные из JSON, можно ведь сразу из EXCEL импортировать

Добрый день.
Например для загрузки записей с rem-моделью, потому как поля rem невозможно использовать в transform map стандартного import source

1 лайк