通过在python中使用xlrd处理合并单元格,从excel数据中生成单键、多值字典

通过在python中使用xlrd处理合并单元格,从excel数据中生成单键、多值字典,python,python-2.7,dictionary,xlrd,Python,Python 2.7,Dictionary,Xlrd,我使用xlrd来提取excel文件中的两列,每一页大约有300个数据 我提取了两个列表中的两列,并使用dictziplist1、list2制作了一个字典 我面临的问题是,列表1中的一些条目是合并的单元格,因此它们在列表2中有多个值 示例输入为: Request: 4.01 04.01.01 04.01.02 06.01.01 06.01.04.01 06.01.04.02 6.08 Request是从A列中提取的键,所有数字都是B列中的值

我使用xlrd来提取excel文件中的两列,每一页大约有300个数据

我提取了两个列表中的两列,并使用dictziplist1、list2制作了一个字典

我面临的问题是,列表1中的一些条目是合并的单元格,因此它们在列表2中有多个值

示例输入为:

Request:    4.01
    04.01.01
    04.01.02
    06.01.01
    06.01.04.01
    06.01.04.02
    6.08
Request是从A列中提取的键,所有数字都是B列中的值

在这种情况下,我如何制作词典

代码段:

file_loc = 'D:/Tool/HC.xlsx'

workbook = xlrd.open_workbook(file_loc)
sheet = workbook.sheet_by_index(0)


tot_cols = sheet.ncols
tot_rows = sheet.nrows

File_name_list =[]
FD_list=[]
值的提取:

for row in range(tot_rows):

    new_list =[sheet.cell_value(row,1)]

    File_name_list.append(new_list)  

    new_list2= sheet.cell_value(row,3)
    FD_list.append(new_list2)

dic= dict(zip(File_name_list,FD_list) # Making a dictionary but due to merged cells all the values are not mapped.

如果你的问题确实来自合并单元格,你可以像前面解释的那样取消合并。但正如我所说,csv是一个更好的选择——更便携,更容易使用,我承认我讨厌微软的东西。基本上,详情如下:

要删除Excel 2007工作簿中的所有合并单元格,请执行以下操作 这些步骤包括:

制作工作簿的备份副本,并将其存储在安全的地方。 在其中一个图纸选项卡上单击鼠标右键,然后单击“选择所有图纸” 在活动工作表上,单击工作表左上角的“全选”按钮 在功能区的“主页”选项卡上,单击“合并和居中”下拉箭头 单击“取消合并单元格”
我建议您将此导出为csv并对其进行解析。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面更改,仅链接的答案可能会无效。非常感谢Weasel。问题是我的输入文件在xlsx中,我必须从中提取两列并制作一个字典。因此使用xlrd来实现。但是当我到达合并的单元格时,它只检测到一个键的值,实际上有不止一个值。由于键位于合并的单元格中,因此会发生这种情况。例如,如果键为:Keith,则单元格合并,值为2,3,4,5。如何提取和链接这两个。。。请引导我。。。如果它的CSV是可能的?在CSV格式中,默认情况下,单元格将由分隔符分隔,因此将更容易将其作为文本处理。你还有一个非常好的python csv库:谢谢。黄鼠狼。。。我将在cSv中完成它并返回。我没有这样的操作经验,因为我过去只处理文本文件和日志文件。你会推荐任何视频吗。除了pydoc之外的链接。希望我的合并单元格问题得到解决。@WeaselFox当我在CSV中转换它时,我将丢失所有excel格式,合并单元格将被取消合并。在这种情况下,我如何连接两个具有单键和多个值的列?