【问题标题】:Converting excel spreadsheet to json将excel电子表格转换为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"
    }
],

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

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

【问题讨论】:

    标签: python json excel pandas


    【解决方案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)
      

      【讨论】:

      • 谢谢!这更有意义,不知道为什么我忽略了这一点。
      猜你喜欢
      • 2020-07-19
      • 2017-05-28
      • 1970-01-01
      • 2013-05-04
      • 2011-07-21
      • 2019-12-12
      • 2016-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多