如何强制Python XlsxWriter以自定义格式写入单元格

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何强制Python XlsxWriter以自定义格式写入单元格相关的知识,希望对你有一定的参考价值。

我正在编写脚本以生成要上传到我们系统中的xlsx文件。列之一包含当前日期,需要以非常特定的方式设置格式(自定义:m / d / yyyy h:mm')。我在脚本中有一条命令可以成功正确格式化单元格,这是我知道的,因为如果我检查生成的xlsx中的单元格格式,它将显示正确的格式。但是,xlsxwriter实际上并未写入该格式,因为它被上载拒绝。如果我打开电子表格并“触摸”该值(在单元格中按Enter),那么它将正确格式化为我期望的值。

是否有任何方法可以强制xlsxwriter以期望的格式写入值,这样我就不必进入此工作表并触摸值了吗?无论如何,有没有办法使我执行的这种“触摸”自动化?考虑到xlsxwriter不操纵电子表格,而只是生成电子表格,我对此表示怀疑。

提供的图像显示两个日期值。第一个是我期望的“接触”值,第二个是脚本编写的值。请注意,这些值实际上是相同的,其中一个值刚刚由excel格式化。

“感动”价值与书面价值的示例:

“触摸值与写入值的示例”

我已经尝试以单独的方式格式化datetime字符串以尝试解决此问题,但是没有任何结果。我找不到与类似问题有关的任何其他文献。

import xlsxwriter
import datetime

x = datetime.datetime.now()
Date = str(x.strftime("%m")) + "/" + str(x.strftime("%d")) + "/" + str(x.strftime("%Y")) + " " + str(x.strftime("%I")) + ":" + str(x.strftime("%M")) + ":00" + " " + str(x.strftime("%p"))
workbook = xlsxwriter.Workbook("C:/" + File_Name)
worksheet = workbook.add_worksheet('Fills')
Dealer_out = ['External', Dealer_Name, Dealer_Exchange, Symbol, 'Manual_JV', '', '', '', Date, Account_Number, Account_Number, Opposite_Side[Dealer_Side.upper()], Dealer_Amount, Dealer_Price, 'TRUE']
Header = ['Source', 'Context', 'Exchange', 'Internal Symbol', 'Origin', 'Order Id', 'Exchange Order Id', 'Fill Id', 'Fill Time', 'Intern Account Number', 'External Account Number', 'Side', 'Quantity', 'Price', 'IsActive']
row = 0
col = 0
#write header to spreadsheet
cell_bold = workbook.add_format({'bold': True})
cell_format1 = workbook.add_format({'num_format': 'm/d/yyyy h:mm'})
cell_format1.set_num_format('m/d/yyyy h:mm')
#write dealer information to spreadsheet
for cell in Dealer_out:
if col == 8:
    worksheet.write(row, col, cell, cell_format1)
else:
    worksheet.write(row, col, cell)
col += 1
db.close()
workbook.close()

从'Dealer_out'中写出的值是从csv中读取和解析的,脚本的这一部分尚未包括在内。提前谢谢您的帮助。

答案

似乎您正在用日期格式编写字符串(看起来像日期)。

但是,Excel中的日期实际上是具有日期格式的数字。 XlsxWriter文档的Working with Dates and Time部分对此进行了说明。

您将需要扩展程序,以将从CSV文件中读取的日期字符串转换为Datetime对象。如果然后编写datetime对象(使用write()和格式),则将以您需要的格式获取日期。

以上是关于如何强制Python XlsxWriter以自定义格式写入单元格的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 xlsxwriter 和 python 将图像添加到 xlsx 文件的标题?

python学习之模块:xlsxwriter

Python xlsxwriter:如何编写引用不同工作表的公式

如何以自定义 json 格式返回数据?

如何停止以自定义意图启动的 Android 服务

如何从 csv 文件中以自定义格式读取时间?