Set_column不能工作,直到手动激活每个单元格

一直试图让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() 

如上所述 – date格式只有在您使用光标进入“D”单元格时才会激活。

列date格式不显示在列单元格中的原因是程序在此处使用单元格格式覆盖它:

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

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

如果您想要使用两种组合格式的单元格或列格式,则需要创build将这些格式组合在一起的新格式,并将其应用于单元格或列。

更新 :另外,我刚刚注意到,您正在编写一个string列D中的date是格式化数字。 这可能是为什么你在返回时看到单元格数据发生变化的原因。 Excel将datetypes的string转换为显示为date的格式化数字。 在XlsxWriter中,您将需要进行转换。 请参阅XlsxWriter文档的使用date和时间部分。

在VBA中, Columns("D").Select做你想要的。 如果你是从一个外部脚本运行,你可能会保存一个VBAmacros,并运行这样的技术: 如何使用xlwings从Python调用Excelmacros? 。