фокусировкой на первой половине первой линии вопрос: как конвертировать Excel к json.
Предположим: таблица Excel представляет собой квадрат данных, где первая строка является объектным ключом, а оставшиеся строки - значениями объекта, а желаемый json - это список объектов.
Усовершенствования в предыдущем ответе: удаление ненужных разделов и объединений (необязательно и может привести к недействительным преобразованиям, если ключи или значения содержат запятые), разрешить пунктирные строки в ключах подразумевать вложенные объекты, coffeescript, записывать файл.
Пунктирная нотация: Ключевая строка (0), содержащая firstName, lastName, address.street, address.city, address.state, address.zip, будет продукт, строка, документ с именами и фамилиями и встроенный документ с именем адрес, с адресом.
функция правопреемником по VISION от How to set object property (of object property of..) given its string name in JavaScript?
Во-первых, загрузите модуль первенствовать
npm install excel --save-dev
Не элегантный, просто get'r'done код
fs = require 'fs'
excel = require 'excel'
FILES = [
{src: 'input.xlsx', dst: 'output.json'}
]
# Assign values to dotted property names - set values on sub-objects
assign = (obj, key, value) ->
# Because we recurse, a key may be a dotted string or a previously split
# dotted string.
key = key.split '.' unless typeof key is 'object'
if key.length > 1
e = key.shift()
obj[e] = if Object.prototype.toString.call(obj[e]) is "[object Object]" then obj[e] else {}
assign obj[e], key, value
else
obj[key[0]] = value
# The excel module reads sheet 0 from specified xlsx file
process = (src, dst) ->
excel src, (err, data) ->
throw err if err
keys = data[0]
rows = data[1..]
result = []
for row in rows
item = {}
assign item, keys[index], value for value, index in row
result.push item
fs.writeFile dst, JSON.stringify(result, null, 2), (err) ->
if err
console.error("Error writing file #{dst}", err)
else
console.log "Updated #{dst}"
process file.src, file.dst for file in FILES
Убедитесь, что файл Excel не открытые любым другим программным обеспечением (особенно Excel!). –
Если ваш список кодов верен, а 'console.log (« Переход к преобразованию ... »);' ничего не печатает, тогда сбой, вероятно, произойдет в другом месте. Попробуйте прокомментировать весь блок try-catch и убедитесь, что появился второй журнал. – SheetJS