猿问

在只读模式下使用 OpenPyXL 获取 Excel 工作表的列名

我该如何找回


openpyxl只读 工作表中的列名(第一行单元格的值)?

City, Population,Country在下面的示例工作表中

openpyxl 只读工作簿中的所有列名?

City,Population,Country,从表1帧和其他列名从所有其他工作表

Excel 工作表示例:


| City       | Population  |    Country   |

| -----------|------------ | ------------ |

| Madison    |   252,551   |     USA      |

| Bengaluru  | 10,178,000  |    India     |

| ...        |       ...   |     ...      |

示例代码:


from openpyxl import load_workbook


wb = load_workbook(filename=large_file.xlsx, read_only=True)

sheet = wb.worksheets[0]


... (not sure where to go from here)

笔记:


我必须使用只读,因为 Excel 文件有超过 100 万行(不要问)

我想要列名,以便最终推断出列类型并将excel数据导入到PostgreSQL数据库中


繁星coding
浏览 812回答 3
3回答

子衿沉夜

这将打印第 1 行的所有内容;list_with_values=[]for cell in ws[1]:    list_with_values.append(cell.value)如果出于某种原因想要获取已填写的列字母的列表,则可以:column_list = [cell.column for cell in ws[1]]对于你的第二个问题;假设您已将标题值存储在名为“list_with_values”的列表中from openpyxl import Workbookwb = Workbook()ws = wb['Sheet']#Sheet is the default sheet name, you can rename it or create additional ones with wb.create_sheet()ws.append(list_with_values)wb.save('OutPut.xlsx')

梵蒂冈之花

只读模式提供对工作表中任何一行或一组行的快速访问。使用该方法iter_rows()限制选择。因此,要获得工作表的第一行:rows = ws.iter_rows(min_row=1, max_row=1) # returns a generator of rowsfirst_row = next(rows) # get the first rowheadings = [c.value for c in first_row] # extract the values from the cells

大话西游666

查理·克拉克斯(Charlie Clarks)的答案精简到具有列表理解力    headers = [c.value for c in next(wb['sheet_name'].iter_rows(min_row=1, max_row=1))]
随时随地看视频慕课网APP

相关分类

Python
我要回答