如何使用嵌套 for 循环将列表列表中的项目插入 excel 单元格?
How to insert items from list of list into excel cells using nested for loops?
我使用日历模块将当月的天数保存在列表中。我希望日期(又名项目)显示在我创建的 excel 文件中。
在我的代码中,我使用 for 循环来遍历指定范围的单元格并在每隔一行中插入当前月份的日期。
# Importing classes from modules
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
import datetime
import calendar
# Creating a workbook
dest_filename = r"C:\Users\abbas\OneDrive\Desktop\Prog\Flex\Working houres.xlsx"
wb = load_workbook(dest_filename)
ws = wb.active
ws.title = "Working hours"
# Current date
ws["B1"] = datetime.datetime.now().strftime("%Y")
ws["C1"] = datetime.datetime.now().strftime("%b")
ws["E1"] = datetime.datetime.now().strftime("%a")
#days_in_the_month = calendar.monthcalendar(2022,5)
days_in_the_month = list(calendar.Calendar(firstweekday=0).monthdayscalendar(2022, 5))
cell_range = ws.iter_rows(min_row=4, max_row=15, min_col=2, max_col=8)
for rows in cell_range:
for cell in rows:
if cell.value is None:
cell.value = days_in_the_month[cell]
elif cell.value is not None:
continue
wb.save("Working hours.xlsx")
有人可以向我解释一下如何将列表 days_of_the_month 中的日期插入第 4、6、8、10、12 和 14 行的单元格中吗?
以及此错误的含义:
cell.value = days_in_the_month[cell]
TypeError: list indices must be integers or slices, not Cell
我一直在尝试理解嵌套循环并反复试验,以了解为什么我无法在没有成功的情况下解决这个问题。
因为 cell
不是整数,所以这不是一个有效的语句,因为您正在尝试访问列表中的索引。
我认为是这样的:
for rows in cell_range:
for cell in rows:
if cell.row % 2 == 0:
cell.value = days_in_the_month[(cell.row // 2) - 4][cell.column - 2] # Subtracting 4 and 2 from rows and cols as they are the starting offsets.
应该可以解决问题。
我使用日历模块将当月的天数保存在列表中。我希望日期(又名项目)显示在我创建的 excel 文件中。
在我的代码中,我使用 for 循环来遍历指定范围的单元格并在每隔一行中插入当前月份的日期。
# Importing classes from modules
from openpyxl import Workbook
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
import datetime
import calendar
# Creating a workbook
dest_filename = r"C:\Users\abbas\OneDrive\Desktop\Prog\Flex\Working houres.xlsx"
wb = load_workbook(dest_filename)
ws = wb.active
ws.title = "Working hours"
# Current date
ws["B1"] = datetime.datetime.now().strftime("%Y")
ws["C1"] = datetime.datetime.now().strftime("%b")
ws["E1"] = datetime.datetime.now().strftime("%a")
#days_in_the_month = calendar.monthcalendar(2022,5)
days_in_the_month = list(calendar.Calendar(firstweekday=0).monthdayscalendar(2022, 5))
cell_range = ws.iter_rows(min_row=4, max_row=15, min_col=2, max_col=8)
for rows in cell_range:
for cell in rows:
if cell.value is None:
cell.value = days_in_the_month[cell]
elif cell.value is not None:
continue
wb.save("Working hours.xlsx")
有人可以向我解释一下如何将列表 days_of_the_month 中的日期插入第 4、6、8、10、12 和 14 行的单元格中吗?
以及此错误的含义:
cell.value = days_in_the_month[cell]
TypeError: list indices must be integers or slices, not Cell
我一直在尝试理解嵌套循环并反复试验,以了解为什么我无法在没有成功的情况下解决这个问题。
因为 cell
不是整数,所以这不是一个有效的语句,因为您正在尝试访问列表中的索引。
我认为是这样的:
for rows in cell_range:
for cell in rows:
if cell.row % 2 == 0:
cell.value = days_in_the_month[(cell.row // 2) - 4][cell.column - 2] # Subtracting 4 and 2 from rows and cols as they are the starting offsets.
应该可以解决问题。