Привет всем, поэтому после того, как я прочитал несколько статей в Интернете о синтаксическом анализе CSV в Node.js и после небольшого исследования, я решил поделиться тем, что я нашел, и, надеюсь, просветить будущих читателей.

Начнем с чтения CSV-файла и его анализа.
Установите xslx с помощью следующей команды: npm install xlsx

xslx - отличный инструмент, который поддерживает следующие форматы: https://www.npmjs.com/package/xlsx#supported-output-formats
, что потрясающе и охватывает большую часть работы, которая будет необходимо при синтаксическом анализе CSV или аналогичных форматов.

Используя следующий набор данных: https://raw.githubusercontent.com/michaellomuscio/Exploring-Data/master/PokemonData.csv

Я разделил это на 2 раздела

  1. чтение CSV
  2. написание CSV

Откройте текстовый редактор и вперед.

const xlsx = require('xlsx')
const fileContent = xlsx.readFile('./pokemon.csv')
let myCsvData = []
for (const sheetName of fileContent.SheetNames) {
let sheetContent = xlsx.utils.sheet_to_json(fileContent.Sheets[sheetName])
myCsvData = [...myCsvData, ...sheetContent]
}

пошаговое руководство по коду:
- импорт xslx
- чтение файла с помощью функции readFile
- цикл по листам в книге (объект, который представляет наш CSV)
- добавление данных в наш массив

Теперь, когда мы знаем, как читать файл CSV, давайте попробуем его написать.

Массив объектов, которые я хочу экспортировать как CSV

const pokemonData =[{
pokemon_name: "Raichu",
type1: "electric",
},{
pokemon_name: "Skarmory",
type1: "steel",
type2: "flying"
}]

Теперь нам нужно создать книгу, преобразовать данные в лист и записать файл.

const myBook = xlsx.utils.book_new()
const dataAsSheet = xlsx.utils.json_to_sheet(pokemonData)
xlsx.utils.book_append_sheet(myBook,dataAsSheet, "pokeSheet")
xlsx.writeFile(myBook,"my-custom-pokemon-data.csv")

пошаговое руководство по коду:
- создание книги
- преобразование наших данных в лист
- добавление листа в книгу
- запись файла

writeFile автоматически угадывает формат выходного файла на основе расширения файла, если bookType не указан. Он выберет первый формат в вышеупомянутой таблице, соответствующий расширению.

Спасибо за чтение, если вы обнаружите какие-либо ошибки, прокомментируйте их ниже, и я исправлю их.