【问题标题】:python extract data from excel spreadsheet to json formpython从excel电子表格中提取数据到json表单
【发布时间】:2017-10-26 00:49:04
【问题描述】:

我想让 Python 从 excel 电子表格中提取一些值并发送到网页以由 javascript 处理。不知道如何以最好的方式解决这个问题。 我想创建一个 dict 对象并将其以 json 形式返回给 js。

基本上从excel电子表格中提取的值如下

Design Lump Sum:
design_cells[0].value, design_cells[1].value
design_cells[0].value, design_cells[1].value
design_cells[0].value, design_cells[1].value
design_cells[0].value, design_cells[1].value
design_cells[0].value, design_cells[1].value
...
..
.
Capex Lump Sum:
Capex_cells[0].value, Capex_cells[1].value
Capex_cells[0].value, Capex_cells[1].value
Capex_cells[0].value, Capex_cells[1].value
Capex_cells[0].value, Capex_cells[1].value
Capex_cells[0].value, Capex_cells[1].value
...
..
.

任何帮助让 python 从上面创建一个 dict 或 json 对象。

请参阅下面的提取代码,该代码迭代行值,

import xlrd
import sys
reload(sys)
sys.setdefaultencoding('utf8')
import json
    book = xlrd.open_workbook("Glebe TE - Master Invoicing.xlsm")
    first_sheet = book.sheet_by_index(1)

    for i in range(12,19):
        design_cells = first_sheet.row_slice(rowx=i, start_colx=2, end_colx=4)

        if str(design_cells[0].value) and str(design_cells[1].value):
            print str(design_cells[0].value)
            print str(design_cells[1].value)


    for i in range(22,155):
        capex_cells = first_sheet.row_slice(rowx=i, start_colx=2, end_colx=4)
        if str(capex_cells[0].value) and str(capex_cells[1].value):
            print str(capex_cells[0].value)
            print str(capex_cells[1].value)


    for i in range(157,175):
        Opex_cells = first_sheet.row_slice(rowx=i, start_colx=2, end_colx=4)
        if str(Opex_cells[0].value) and str(Opex_cells[1].value):
            j = j + 1
            print str(Opex_cells[0].value)
            print str(Opex_cells[1].value)

【问题讨论】:

    标签: javascript python json excel


    【解决方案1】:

    好吧,如果您是print-ing,为什么不将它们打包到一个数组中,其中数组元素是一行,并且您有一个带有单个数组或仅数组数组的 dict:

    alist = []    
    tlist = []
    
    for i in range(12,19):
        design_cells = first_sheet.row_slice(rowx=i, start_colx=2, end_colx=4)
        if str(design_cells[0].value) and str(design_cells[1].value):
            #print str(design_cells[0].value)
            #print str(design_cells[1].value)
            alist.append([str(design_cells[0].value), str(design_cells[1].value)]
    

    alist 将是:[ [0value, 1value], [0value, 1value],... ]

    编辑:OP 显然想要一个 dicts 列表(其值也是列表):

    tlist.append({'Design Sum': alist})
    alist = [] # clear alist for next group
    

    那么您只需要:json_dumps(tlist) 将该对象转换为 json 字符串...

    【讨论】:

    • 谢谢,但我需要数组值具有嵌套值,如上面的示例,即 alist 将是:[Design Lump Sum:[ [0value, 1value], [0value, 1value],..] ,Capex Lump Sum:[ [0value, 1value], [0value, 1value],..],OPEX Lump Sum:[ [0value, 1value], [0value, 1value],..] ]
    猜你喜欢
    • 2011-04-03
    • 2014-04-06
    • 1970-01-01
    • 1970-01-01
    • 2011-05-24
    • 1970-01-01
    • 2010-11-17
    • 1970-01-01
    相关资源
    最近更新 更多