背景:
我有一个 Excel 工作簿,其中包含分布在各个工作表中的元数据。我需要从各个工作表中获取相关的数据列,并将它们合并到一个工作表中。使用以下代码,我已经能够创建一个新的工作表并向其中添加数据。
# Open workbook and assign worksheet
try:
wb = openpyxl.load_workbook(metadata)
shtEditionLNM = wb.worksheets[0] # Edition date & latest NM
shtChartsTitles = wb.worksheets[1] # Charts & Titles
shtDepthHeight = wb.worksheets[4] # Depth & heights
shtChartProj = wb.worksheets[7] # Chart Projection
except:
raise SystemExit(0)
new = wb.create_sheet()
new.title = "MT_CHARTS INFO"
new.sheet_properties.tabColor = "1072BA"
shtMeta = wb.get_sheet_by_name("MT_CHARTS INFO")
for row in shtChartsTitles.rows:
shtMeta.append([row[0].value, row[1].value, row[2].value, row[4].value])
for row in shtEditionLNM.rows:
shtMeta.append([row[3].value, row[4].value])
wb.save('OW - Quarterly Extract of Metadata for Raster Charts Dec 2015.xlsx')
这工作没有任何错误,我可以看到保存到我的新工作簿中的数据。然而,当我运行第二个循环并附加值时,它们被附加到单元格 A3169,而我实际上希望它们从 E1 填充。
我的问题归结为“有没有办法可以附加到新列而不是新行?”
提前致谢!
不直接:ws.append()
适用于行,因为这是数据存储的方式,因此最容易针对只读和只写模式进行优化。
然而,ws.cell(row=x, column=y, value=z)
会让你做你想做的事。版本 2.4(从结帐安装)还允许您通过管理单元格分配来直接使用列:ws['E']
将返回列中直到当前的单元格的元组ws.max_row
; ws.iter_cols(min_col, min_row, max_col, max_row)
将返回一个与您需要的大小相同的列生成器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)