将excel电子表格转换为json

Posted

技术标签:

【中文标题】将excel电子表格转换为json【英文标题】:Converting excel spreadsheet to json 【发布时间】:2021-05-27 00:40:35 【问题描述】:

我想将 Excel 电子表格数据转换为 JSON 文件。这是我目前拥有的代码:

数据 excel spreadsheet

代码

import xlrd 
from collections import OrderedDict
import json
wb = xlrd.open_workbook('./file1.xlsx')
sh = wb.sheet_by_index(0)
data_list = []
for rownum in range(1, sh.nrows):
    data = OrderedDict()
    row_values = sh.row_values(rownum)
    data['name'] = row_values[0]
    data['description'] = row_values[1]
    data_list.append(data)
data_list = 'columns': data_list
j = json.dumps(data_list)
with open('seq1.json', 'w') as f:
    f.write(j)

输出

"columns": ["name": "FILEID", "description": "FILETYPE"]

预期输出


  "columns": [
    
      "name": "fileid",
      "description": "FILEID"
    ,
    
      "name": "filetype",
      "description": "FILETYPE"
    ,
    
      "name": "stusab",
      "description": "STUSAB"
    ,
    
      "name": "chariter",
      "description": "CHARITER"
    ,
    
      "name": "sequence",
      "description": "SEQUENCE"
    ,
    
      "name": "logrecno",
      "description": "LOGRECNO"
    
],

“名称”列应显示第一行,而“描述”列应显示第二行。

我可以在我的函数中进行哪些修改以获得我正在寻找的输出?

【问题讨论】:

【参考方案1】:

你应该尝试一下:

import excel2json

excel2json.convert_from_file('file.xlsx')

【讨论】:

我知道这个库,但我希望我的函数足够灵活,以便在我前进时添加更多列。【参考方案2】:

你可以使用熊猫

import pandas as pd

df = pd.read_excel('./file1.xlsx')
with open('seq1.json', 'w') as f:
    f.write(df.to_json())

【讨论】:

【参考方案3】:

您需要遍历列,而不是行

import xlrd 
from collections import OrderedDict
import json
wb = xlrd.open_workbook('./file1.xls')
sh = wb.sheet_by_index(0)

data_list = []
data = OrderedDict()

for colnum in range(0, sh.ncols):    
    data['name'] = sh.row_values(0)[colnum]
    data['description'] = sh.row_values(1)[colnum]
    data_list.append(data.copy())

data_list = 'columns': data_list
j = json.dumps(data_list)
with open('seq1.json', 'w') as f:
    f.write(j)

【讨论】:

谢谢!这更有意义,不知道为什么我忽略了这一点。

以上是关于将excel电子表格转换为json的主要内容,如果未能解决你的问题,请参考以下文章

自动化 Excel 工作 - 将平面文件转换为 Excel 电子表格

将excel电子表格读入pandas DataFrame时将数字转换为字符串

将 Excel XML 电子表格转换为 xlsx

导入 Excel 电子表格时 MS Access 2013 类型转换失败

如何读取指定的单元格值并将文件从 excel 转换为电子表格?

将 Excel 电子表格或 CSV 中的数据导入 MySQL