Python 在手动激活每个单元格之前,Set_列不工作

Python 在手动激活每个单元格之前,Set_列不工作,python,excel,xlsxwriter,Python,Excel,Xlsxwriter,我一直试图让set_列保持工作状态。让熊猫工作有困难,所以一直在做这件事。现在我正在使用: “sheet.set_column'D:D',None,format4”-这似乎只在我进入xlsx文件并实际激活D列中的每个单元格时起作用。有没有办法激活每个单元格,这样我就不必手动操作了 提前谢谢 import xlsxwriter,os,sys,datetime now=datetime.datetime.now() def main(): platform=sys.platform

我一直试图让set_列保持工作状态。让熊猫工作有困难,所以一直在做这件事。现在我正在使用: “sheet.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中,ColumnsD。选择即可。如果从外部脚本运行,则可以保存VBA宏,并使用以下技术运行它:。

在VBA中,ColumnsD。选择执行所需操作。如果使用外部脚本运行,则可以保存VBA宏并使用以下技术运行:。

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

for name in cur:
    worksheet.write(counter, count, name,format)
    count+=1
在XlsxWriter中,与Excel中一样,单元格格式覆盖列格式

如果希望单元格或列格式是两种组合格式的结果,则需要创建一种新格式,将这些格式组合在一起,并将其应用于单元格或列


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

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

for name in cur:
    worksheet.write(counter, count, name,format)
    count+=1
在XlsxWriter中,与Excel中一样,单元格格式覆盖列格式

如果希望单元格或列格式是两种组合格式的结果,则需要创建一种新格式,将这些格式组合在一起,并将其应用于单元格或列


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

您需要使用

范例

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文档中的。

您需要使用

范例

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文档中的。

set_列没有已知问题。你能发布一个完整的工作示例来演示这个问题吗?下面是一个工作示例。注意:你做了一个小测试来分配这个斜杠,它在你的示例代码中根本没有使用。但是我猜在你的完整程序中,你没有包括在这里,你在路径名中使用了斜杠。一般来说,您不必知道分隔符;在大多数情况下,即使在Windows上,也可以只使用常规斜杠。如果您确实必须知道平台的主路径分隔符,那么只需使用os.sep而不是rigamarole。你能发布一个完整的工作示例来演示这个问题吗?下面是一个工作示例。注意:你做了一个小测试来分配这个斜杠,它在你的示例代码中根本没有使用。但是我猜在你的完整程序中,你没有包括在这里,你在路径名中使用了斜杠。一般来说,您不必知道分隔符;在大多数情况下,即使在Windows上,也可以只使用常规斜杠。如果你真的,真的必须知道你的平台的主路径分隔符,那么就用os.sep而不是你的rigamarole.Working Sample to follow:Working Sample to follow:那么,如果我使用If/else语句,比如If count==3:`worksheet.writecounter,count,name,format4``else:`worksheet.writecounter,count,名称、格式理论上是,但您还需要将D列中的字符串转换为Excel日期。查看我的更新。使其正常工作,尽管我花了一些时间才确定需要执行datetime.datetime.strptime调用。这对我很有帮助,因为我有大量的报告要从数据库中取出。谢谢你的帮助-我想我也会添加关于datetime设置的注释。那么,如果我使用if count==3这样的if/else语句:`worksheet.writecounter,count,name,format4``else:`worksheet.writecounter,count,name,格式理论上是的,但您还需要将D列中的字符串转换为Excel日期。查看我的更新。使其正常工作,尽管我花了一些时间才确定需要执行datetime.datetime.strptime调用。这对我很有帮助,因为我有大量的报告要从数据库中取出。谢谢你的帮助-我想我会添加关于 datetime设置也可以。