python - 使用 Openpyxl 编写时将数据转换为日期类型
问题描述
关于在写入 Excel 文档时格式化数据的问题,因为我对使用 Openpyxl 有点新。
我有一个 Excel 表,我正在将数据写入其中一列是保存当前日期为“mm/dd/yyyy”格式的列。目前,在写入 Excel 文档时,我的代码将日期重新格式化为“yyyy-mm-dd”格式,并且 excel 文档不将数据识别为“日期”类型,而是识别为“常规”数据类型。
这是我将日期写入工作表的 Python 代码。
from openpyxl import Workbook
from openpyxl import load_workbook
from date time import date
workbookName = "Excel workbook.xlsm"
wb = Workbook()
wb = load_workbook(workbookName, data_only=True, keep_vba=True)
ws = wb["Sheet1"]
rowCount = 2000
insertRow = rowCount + 7
origDate = date.today()
dateString = datetime.datetime.strftime(origDate, '%m/%d/%Y')
insertDate = datetime.datetime.strptime(dateString, '%m/%d/%Y').date()
dateCell = ws.cell(row = insertRow, column = 1)
dateCell.value = insertDate
wb.save("Excel workbook.xlsm")
因此,例如,如果我使用今天的日期运行此代码03/19/2021
,则单元格看起来像2021-03-18
类型General
。
不知道我错过了什么,但我希望插入的单元格具有“mm/dd/yyyy”格式的“日期”类型。任何指针?
解决方案
我认为这可以通过以下方式简单地完成:
dateCell.value = origDate
dateCell.number_format = 'mm/dd/yyyy'
请注意,Excel 中没有日期数据类型之类的东西。日期只是一个格式化的数字。“日期”(以及“常规”)只是格式化;单元格的基础价值是独立的且不变的。
尽管如果您真的希望单元格显示为“日期”格式而不是“自定义”格式,也许:
dateCell.number_format = 'mm/dd/yyyy;@'
推荐阅读
- selenium-webdriver - 如何在 Cucumber-Java-TestNG 框架中处理 Extent Reports 的 createtest() 方法?
- github - 如果我将我的 github repo 转为私有,与之相关的云项目是否会遇到任何问题?
- javascript - (Canvas | Discord.js) 我正在尝试使用 `ctx.drawImage(background, 0, 0, canvas.width, canvas.height)` 设置背景,但该命令不起作用
- python - 在 Tornado 的阻塞上下文中调用异步函数
- android - 尝试运行 AVD 时“找不到 ADB” - 路径中的 adb.exe,重新安装了平台工具,并且没有安装防病毒软件
- javascript - 从源“null”访问 XMLHttpRequest 已被 CORS 策略阻止:对预检请求的响应未通过访问控制
- javascript - 将字符串转换为整数并在momentJS中显示
- android - 定期工作管理器无法在 Android 8、9 和 10 中运行
- c++ - 在c ++中使用正则表达式的问题错误括号表达式中的范围无效
- python - 如何在 `setUpTestData` 中创建会话密钥以用于后续测试?