Set_column 在手动激活每个单元之前无法工作

Set_column not working until manually activatiing each cell

一直在努力让 set_column 继续工作。在使 Pandas 工作时遇到问题,所以一直在 xlsxwriter 中进行。现在正在使用: 'worksheet.set_column('D:D',None,format4)' - 这似乎只有在我进入 xlsx 文件并实际激活 "D" 列中的每个单元格时才有效。有什么方法可以激活每个单元格,这样我就不必手动操作了吗?

提前致谢。

import xlsxwriter,os,sys,datetime
now=datetime.datetime.now()
def main():
    platform=sys.platform
    if platform.find('win')>=0:
        TheSlash='\'
    else:
        TheSlash='/'
    output = '%s-%s.xlsx' % ('XlsxSample',now.strftime("%m%d%Y-%H%M"))
    workbook = xlsxwriter.Workbook(output, {'strings_to_numbers':True,'default_date_format':'mm/dd/yy hh:mm'})
    worksheet = workbook.add_worksheet()
    count=0
    counter=0
    format=workbook.add_format({'font_size':'8','border':True})
    formatdict={'num_format':'mm/dd/yy hh:mm'}
    format4=workbook.add_format(formatdict)
    cur =('Pole1','33.62283963','-90.54639967','4/20/16 11:43','-90.54640226','33.62116957','5207069','25-04','50','3','PRIMARY','PGC')
    for name in cur:
        worksheet.write(counter, count, name,format)
        count+=1
    counter+=1
    worksheet.set_column('D:D',None,format4)
    workbook.close()
if __name__ == "__main__":
    main()

如上所述 - 日期格式似乎只有在您使用光标进入 "D" 单元格本身时才会激活。

在VBA中,Columns("D").Select做你想做的事。如果您从外部脚本 运行ning,您可以使用如下技术保存 VBA 宏和 运行 它:.

列日期格式未显示在列单元格中的原因是程序正在用此处的单元格格式覆盖它:

for name in cur:
    worksheet.write(counter, count, name,format)
    count+=1

在 XlsxWriter 中,与在 Excel 中一样,单元格格式会覆盖列格式。

如果您希望单元格或列格式是 2 种组合格式的结果,您需要创建一种新格式来组合这些格式并将其应用于单元格或列。

更新:另外,我刚刚注意到您在 D 列中写了一个字符串。Excel 中的日期是格式化的数字。这可能就是您在点击 return 时看到单元格数据发生变化的原因。 Excel 正在将类似日期的字符串转换为显示为日期的格式化数字。在 XlsxWriter 中,您需要进行转换。请参阅 XlsxWriter 文档的 Working with Dates and Time 部分。

您需要使用 datetime.datetime.strptime()

更改格式

例子

import datetime
datetime_result = datetime.dateime.strptime('04/20/16 11:43', '%m/%d/%Y %H:%M')
format5 = workbook.add_format({'num_format':'mm/dd/yy hh:mm'})
worksheet.write('A5', datetime_result, format5)

参考 XlsxWriter 文档中的 Working with Dates and Time