python - 如何将相同的值追加到列中,直到达到最大行?
问题描述
我正在尝试将一个新值传递给从 B2 开始并循环到 Max Row 的 B 列。
import openpyxl
import os
# Finds current directoryhow
current_path = os.getcwd()
print(current_path)
# Changes directory
os.chdir('C:\\Users\\satwood\\Documents\\Example')
# prints new current directory
new_path = os.getcwd()
print(new_path)
# load workbooks
wb = openpyxl.load_workbook('example.xlsx')
type(wb)
# load worksheets
ws1 = wb.active
# append column B with cell_example
cell_example = ['success one']
max = ws1.max_row
for row, entry in enumerate(cell_example, start=1):
ws1.cell(row=row + max, column=1, value=entry)
wb.save('example.xlsx')
这段代码的输出是: 无 无 无 无 无 无 ...
解决方案
你的代码没有做你期望它做的事情。您正在迭代cell_example
哪个是只有 1 个项目 ( 'success one'
) 的列表。您的循环运行一次, row 是相等的1+max_row
并且 entrysuccess one
是分配给 cell 的A{1+max_row}
。
请注意 B 列正在B
使用ws['B{row}']
或2
使用您在代码中使用它的方式。
如果您尝试将相同的值添加到max_row
B 列中的所有单元格,那么您只需将循环更改为:
for row in range(2, max_row):
ws1.cell(row=row, column=2, value=cell_example[0])
但是,如果您希望遍历列表cell_example
并将其分配给 B 列,那么您可以使用:
for row, entry in enumerate(cell_example, start=2):
ws1.cell(row=row, column=2, value=entry)
这会将列表中的项目添加cell_example
到从单元格 B2 开始的 B 列中。
请注意 stovfl 所说的内容,并指出迭代列中单元格的更好方法是使用:
for col_cells in worksheet.iter_cols(min_col=2, max_col=2):
for cell in col_cells:
cell.value = "Something"
正如他提到的这个答案中所述。
推荐阅读
- laravel - 在 Laravel/Vue SPA 中实现 Service Worker 的最佳方式
- javascript - 当链接未硬编码时,将给定链接转换为 PDF 不起作用
- oauth - oauth 是否会在每个请求中发布一个新令牌?
- tortoisesvn - 如何重置 TotroiseSvn 信息?
- c# - 将网格视图列值插入文本框并在按钮控件上下拉
- angular - 角度路由,加载完整(子)项目
- firebase - Flutter 无法从 Google API 获取数据
- ios - 一次实例化 UIView 并在所有 ViewControllers 中重用
- javascript - 是否可以在浏览器中使用 JavaScript 发出 HTTP CONNECT 请求?
- python - python vs源代码字符串不能包含空字节