Превзойти различные объекты JSON
-
26-10-2019 - |
Вопрос
У меня есть эта таблица Excel:
country year 1 2 3 4 Netherlands 1970 3603 4330 5080 5820 Netherlands 1971 3436 4165 4929 5693 Netherlands 1972 3384 4122 4899 5683 Sweden 1970 1479 1963 2520 3132 Sweden 1971 1497 1985 2547 3163 Sweden 1972 1419 1894 2445 3055
Я хотел бы поэкспериментировать с двумя форматами JSON. Либо:
data = [
Netherlands : {
1970 : [3603, 4330, 5080, 5820],
1971 : [...],
},
Sweden : {
1970 : [...]
},
]
Или используя заголовки 1,2,3,4 в качестве x-значения:
data = [
Netherlands : {
1970 : [{x: 1, y: 3603}, {x: 2, y: 4330}, {x: 3, y: 5080}, {x: 4, y: 5820}],
1971 : [...],
},
Sweden : {
1970 : [...]
},
]
Как мне легко добраться от Excel к моим предпочтительным форматам JSON?
Пожалуйста, предложите конкретные методы для этого преобразования, а также общие инструменты преобразования данных, такие как отличные MR Data Converter а также Google уточняет.
Благодарю вас!
Решение
Вы можете скачать набор классов, которые преобразуют данные Excel в JSON отсюда. http://ramblings.mcpher.com/home/excelquirks/downloadlist. Анкет Проект, который вы хотите, - это «классы манипулирования данными».
Используя эти классы, этот код
Option Explicit
Public Sub mainExample()
Dim dSet As cDataSet
Set dSet = New cDataSet
With dSet
.populateData Range("data!$a$1"), , , , , , True
If .Where Is Nothing Then
MsgBox ("No data to process")
Else
MsgBox .jSonObject
End If
End With
End Sub
это все, что нужно для создания этого из ваших данных.
{ "data": {
"country": "Sweden",
"year": "1972",
"1": "1419",
"2": "1894",
"3": "2445",
"4": "3055"
}
}
Вы можете делать более сложные вещи или адаптировать вывод, прочитав эту статью о том, как она работает. http://ramblings.mcpher.com/home/excelquirks/recursionlink/hiding-data-in-excel-objects
Брюс
Другие советы
Иногда я просто использую простую строковую конкатанацию для генерации операторов SQL, думаю, вы могли бы сделать что -то вроде:
=A2 + ": { " + A3 + ", " + A4 + ", " + A5 + ", " + A... +"}"
Чем обернуть внутрь data = []
, или использовать причудливую формулу .. Для второй части вы должны заблокировать ряд $ A1