一直试图让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”单元格,日期格式似乎只会激活。
答案 0 :(得分:3)
您需要使用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。
答案 1 :(得分:2)
在VBA中,Columns("D").Select
可以满足您的需求。如果从外部脚本运行,则可以保存VBA宏并使用以下技术运行它:How do I call an Excel macro from Python using xlwings?。
答案 2 :(得分:2)
列单元格中未显示列日期格式的原因是程序在此处使用单元格格式覆盖它:
for name in cur:
worksheet.write(counter, count, name,format)
count+=1
在XlsxWriter中,与在Excel中一样,单元格格式会覆盖列格式。
如果您希望获得由2种组合格式组成的单元格或列格式,则需要创建一种新格式,将这些格式组合并应用于单元格或列。
更新:另外,我刚刚注意到您在D列中写了一个字符串.Excel中的日期是格式化的数字。这可能是您在返回时看到单元格数据发生变化的原因。 Excel正在将类似日期的字符串转换为显示为日期的格式化数字。在XlsxWriter中,您需要进行转换。请参阅XlsxWriter文档的Working with Dates and Time部分。