使用openpyxl
版2.6.1
关于尝试格式化列,这里有许多未解决的线程。我知道您目前无法格式化整个列...仅单个单元格?不过,我似乎甚至无法做到这一点。我正在尝试将列格式设置为'mm/dd/yyyy'
。我也知道NumberFormat()
已被删除。我上次尝试的结果是“有效”(这是我第一次运行并发布到excel电子表格中的代码)是下面的代码...但是它不格式化该列,我在单元格中得到的结果B2
是TRUE
。我在这里想念什么?
from openpyxl.styles import is_date_format, numbers
s = numbers.is_date_format('mm/dd/yy')
daily_runs_ws['B2'] = s
例如,当前单元格格式(不尝试对其进行编辑)为11/14/2019 12:00:00 AM
。
答案 0 :(得分:3)
这对我有用。 Openpyxl
允许日期时间。所以,我建议这样:
import datetime
import openpyxl
dttm = datetime.datetime.strptime("09-12-2018", "%m/%d/%Y")
print(dttm)
cell = ws['A1']
cell.value = value
cell.number_format = 'YYYY MMM DD'
格式化单元格的方法是使用.number_format = "format"
。
答案 1 :(得分:1)
是的,目前您不能仅使用openpyxl将整个列格式化为日期,但是可以通过以下方式格式化文档中的任何单元格(包括列中所有已写入的单元格):
import openpyxl
document = openpyxl.load_workbook("document.xlsx") # Opens excel document
sheet = document.active # Sets active sheet
# To format all written cells in a column (Ex. column "B")
for cell in sheet["B"]:
cell.number_format = "DD/MM/YYYY"
请注意,仅格式化已写入列中的单元格非常重要,最后一个写入单元格之后的所有其他空白单元格(不适用于空白单元格除非事先格式化,否则将保持“常规”格式。
答案 2 :(得分:0)
numbers.is_date_format
是openpyxl用于确定数字格式是否用于日期和时间的函数。使用它的方式将返回True
并将B2
的值设置为True。可能不是您想要的。
我建议您阅读openpyxl文档中涉及样式的部分。那应该回答你的问题。