背景:
想要设置Excel里面的单元格格式为"yyyy-mm-dd hh:mm:ss",如下图所示:

之前社区有个帖子, excel如何给日期单元格设置自定义格式 ,里面提到可以提前设置好Excel模板或者将单元格格式改成文本。那有没有一种方法既要设置成目标格式,也不想要提前设置模板呢?
解决方案:
可以用python实现,运行前先将Excel关掉。
from openpyxl import load_workbook
def set_cell_format(file_path, sheet_name, write_area, cell_format_string):
# 加载现有的工作簿
wb = load_workbook(file_path)
# 选择工作表
ws = wb[sheet_name]
# 检查 write_area 是否包含数字
if ":" in write_area:
# 处理范围,如 "A1:A10"
for row in ws[write_area]:
print(row)
for cell in row:
cell.number_format = cell_format_string
elif "," in write_area:
# 处理多列
for col_name in write_area.split(","):
column = ws.column_dimensions[col_name]
column.number_format = cell_format_string
else:
#处理单列
column = ws.column_dimensions[write_area]
column.number_format = cell_format_string
# 保存工作簿到文件
wb.save(file_path)
file_path = r"D:\desktop\测试.xlsx"
sheet_name = "Sheet1"
#写入区域,如果是区域,则用冒号分隔,如 "A1:B12"
#如果是多列,则写列名,用逗号分隔,如 "A,C,E"
#如果是单列,则直接写列名,如 "A"
write_area = "A,C,E"
cell_format_string = "yyyy-mm-dd hh:mm:ss"
set_cell_format(file_path, sheet_name, write_area, cell_format_string)