使用Python xlsxwriter创建excel时,仅设置“格式”;采取;双击单元格后
我创建了一个脚本,该脚本生成一个数据帧,我希望将其放入excel文档中。在下面的代码中,我正在设置我认为正确的参数来设置每列的格式 生成excel后,每个单元格中的格式都不正确。 只有双击单元格,格式才会正确 检查excel文档的格式显示,对于每一行,我的格式都是由代码设置的,但没有显示 提前感谢您提供的任何可能解决此问题的建议使用Python xlsxwriter创建excel时,仅设置“格式”;采取;双击单元格后,python,excel,format,xlsxwriter,Python,Excel,Format,Xlsxwriter,我创建了一个脚本,该脚本生成一个数据帧,我希望将其放入excel文档中。在下面的代码中,我正在设置我认为正确的参数来设置每列的格式 生成excel后,每个单元格中的格式都不正确。 只有双击单元格,格式才会正确 检查excel文档的格式显示,对于每一行,我的格式都是由代码设置的,但没有显示 提前感谢您提供的任何可能解决此问题的建议 # -*- coding: utf-8 -*- """ Created on Tue Apr 30 10:28:45 2019 @author: ny """ imp
# -*- coding: utf-8 -*-
"""
Created on Tue Apr 30 10:28:45 2019
@author: ny
"""
import logging
import sys
import pyodbc # Database connector
import pandas as pd # Data frames
import datetime # Dates and time
from datetime import timedelta
import numpy as np
test = {'col1':['USD'],
'col2':['USD Fed'],
'col3':['2019-01-04 15:15:00'],
'col4':['2019-01-04 15:24:59.999'],
'col5':['1.13564'],
'col6':['1.13528'],
'col7':['1.13845'],
'col8':['1.137'],
'col9':['0.002474375682434556'],
'col10':['0.0015150447466703754'],
'col11':['-28.10'],
'col12':['-17.20']}
testdf = pd.DataFrame(data=test)
#results = results.sort_values(by=['TimeStart'], ascending=False)
#Excel
#results = results.applymap(str)
outputString = 'test' + "MarketMovement.xlsx"
writer = pd.ExcelWriter(outputString, engine = 'xlsxwriter')
testdf.to_excel(writer, sheet_name ='Events',index = False)
resultsLn = len(testdf)
Clength = 'A1:L'+str(resultsLn+1)
workbook = writer.book
num_fmt = workbook.add_format({'num_format': '#,##0.00000'})
day_fmt = workbook.add_format({'num_format': 'yyyy-mm-dd hh:mm:ss'})
worksheet = writer.sheets['Events']
worksheet.add_table(Clength, {'columns': [
{'header': 'titleCurrency'}#a
,{'header': 'Event'}#a
,{'header': 'TimeStart'}#a
,{'header': 'TimeEnd'}#b
,{'header': 't1HighRate'}#c
,{'header': 't1LowRate'}#d
,{'header': 't10HighRate'}#e
,{'header': 't10LowRate'}#f
,{'header': 'PercentHighChange'}#g
,{'header': 'PercentLowChange'}#h
,{'header': 'changeHighPips'}#i
,{'header': 'changeLowPips'}#j
],
'autofilter': True,
'total_row': False,
'style': 'Table Style Medium 2'})
worksheet.set_column('A:A', 20)
worksheet.set_column('B:B', 20)
worksheet.set_column('C:C', 20, day_fmt)
worksheet.set_column('D:D',20, day_fmt)
worksheet.set_column('E:E',25, num_fmt)
worksheet.set_column('F:F',25, num_fmt)
worksheet.set_column('G:G',25, num_fmt)
worksheet.set_column('H:H',25, num_fmt)
worksheet.set_column('I:I',25, num_fmt)
worksheet.set_column('J:J',25, num_fmt)
worksheet.set_column('K:K',25, num_fmt)
worksheet.set_column('L:L',25, num_fmt)
writer.save()
writer.close()
#Clear all kernel after finished
# import IPython
# app = IPython.Application.instance()
# app.kernel.do_shutdown(True)
解决方案是,我需要确保数据类型完全匹配。 python需要使用正确的日期时间格式,数字需要使用数字格式。
解决方案由jmcnamara提供。解决方案是我需要确保数据类型完全匹配。 python需要使用正确的日期时间格式,数字需要使用数字格式。
解决方案由jmcnamara提供。如果没有完整的工作示例,就无法说明问题所在。但是,
set\u column()
的语法不正确。它接受一个列,而不是单元格,范围。看。我不知道这是否是问题,但你至少应该解决它。谢谢,我会解决的,然后回来。我可以提供哪些更详细的信息来帮助您?现在的格式是工作表。set_column('A:A',20)
没有改变任何内容。我添加了一个完整的工作示例谢谢您的示例。数据未格式化,因为它是作为字符串写入的,Excel仅对数字应用数字格式。因此,您需要将数字和日期数据转换为数字和日期(使用datetime.py)。但是,set\u column()
的语法不正确。它接受一个列,而不是单元格,范围。看。我不知道这是否是问题,但你至少应该解决它。谢谢,我会解决的,然后回来。我可以提供哪些更详细的信息来帮助您?现在的格式是工作表。set_column('A:A',20)
没有改变任何内容。我添加了一个完整的工作示例谢谢您的示例。数据未格式化,因为它是作为字符串写入的,Excel仅对数字应用数字格式。因此,您需要将数字和日期数据转换为数字和日期(使用datetime.py)。