1
格式化我遇到一些麻煩,這段代碼編寫和使用xlwt
#data_list = some data
wb = xlwt.Workbook()
s = wb.add_sheet("Test Sheet")
for c, data in enumerate(data_list):
xf=None
if isinstance(data, datetime.time):
xf = xlwt.easyxf(num_format_str='HH:MM:SS') #works
elif isinstance(data, datetime.date):
xf = xlwt.easyxf(num_format_str='MM/DD/YYYY') #doesn't work
if xf:
sheet.write(r+1,c,data, xf)
else:
sheet.write(r+1,c,data)
在輸出datetime.date對象,日期都顯示爲「#####」開始。我可以通過與每列中的單元格交互來正確格式化它們,但這很耗時。我嘗試了一下num_format_str,但是到目前爲止沒有運氣。
您確定這不僅僅是因爲您的Excel中的列太窄嗎?如果該列要縮小以顯示整個日期,則會顯示爲「#######」。 – 2011-06-16 16:51:35
不是您的問題的原因,但:調用xlwt.easyxf通常不便宜。儘可能在進入環路之前進行操作。 – 2011-06-16 21:16:02
感謝這兩個。當然,特里是絕對正確的。而且我發現了在循環內調用easyxf的錯誤:看起來好像沒有檢查xf對象是否在功能上是相同的,所以我在嘗試生成超過一定數量的對象時收到異常。 – mcstrother 2011-06-18 05:13:41