Python 读取csv文件并使用文本换行将df写入excel
我正在尝试获得以下输出。除标题外,所有行和列均为文本换行: 格式应用于除标题以外的所有行和列。我不知道为什么格式不适用于第一列(标题),或者我想手动添加列标题号,如0、1、2等,以便我将标题的开头部分打开,因此所有行和列都将被格式化 在上面的屏幕截图中,换行文字不应用于A1到E1,C1列的标题有很多空间。如果我手动单击“换行文字”,它会对齐,否则所有标题都不会使用换行文字进行格式化。有几个问题:Python 读取csv文件并使用文本换行将df写入excel,python,pandas,format,Python,Pandas,Format,我正在尝试获得以下输出。除标题外,所有行和列均为文本换行: 格式应用于除标题以外的所有行和列。我不知道为什么格式不适用于第一列(标题),或者我想手动添加列标题号,如0、1、2等,以便我将标题的开头部分打开,因此所有行和列都将被格式化 在上面的屏幕截图中,换行文字不应用于A1到E1,C1列的标题有很多空间。如果我手动单击“换行文字”,它会对齐,否则所有标题都不会使用换行文字进行格式化。有几个问题: 您的代码正在正确尝试格式化标题,但当您使用.to_excel()创建文件时,您告诉它从行/col1
.to_excel()
创建文件时,您告诉它从行/col1,1开始。不过,单元格的编号是从0,0
开始的。因此,如果您改为:
df.to_excel(writer,sheet_name='Sheet1', startrow=0, startcol=0, header=True, index=False, encoding='utf8')
您将看到列A
和行1
都已格式化:
i、 e.列A
为0
且行1
为0
import pandas as pd
import pandas.io.formats.style
import os
from pandas import ExcelWriter
import numpy as np
from xlsxwriter.utility import xl_rowcol_to_cell
writer = pd.ExcelWriter('test1.xlsx', engine='xlsxwriter', options={'strings_to_numbers': True}, date_format='mmmm dd yyyy')
#df = pd.read_csv("D:\\Users\\u700216\\Desktop\\Reports\\CD_Counts.csv")
df = pd.read_csv("CD_Counts.csv")
df.to_excel(writer, sheet_name='Sheet1', startrow=1 , startcol=0, header=False, index=False, encoding='utf8')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format_header = workbook.add_format()
format_header.set_align('center')
format_header.set_bold()
format_header.set_text_wrap()
format_header.set_border()
format_data = workbook.add_format()
format_data.set_align('center')
format_data.set_text_wrap()
worksheet.set_column('A:Z', 20, format_data)
worksheet.set_row(0, 40, format_header)
# Write the header manually
for colx, value in enumerate(df.columns.values):
worksheet.write(0, colx, value)
writer.save()
这将给你:
注意:也可以告诉熊猫要使用的样式,或者强制熊猫使用
None
,这样熊猫将继承你自己的样式。这种方法的唯一缺点是,所需的方法取决于所使用的熊猫的版本。此方法适用于所有版本。我建议您编辑此问题,以包含Excel屏幕截图,显示您希望数据的显示方式。列格式不应用于第一行的标题单元格,因为Pandas已将单元格格式应用于这些单元格,并覆盖了列格式。请参阅此SO问题中的和解释。我尝试了pd.formats.format.header_style=None它抛出错误模块“pandas”没有属性“formats”,那么您的pandas版本可能早于0.18.1。尝试链接答案中显示的旧版本:pd.core.format.header\u style=None
好!非常感谢:)A栏为0,第1行为0不起作用:(居中对齐起作用,但文本换行不起作用。在C1行中,有一个标题有很大的空间,但它不会换行文本:(请添加一个屏幕截图,说明您试图在问题中获得的内容(即在Excel中手动制作一个外观正确的标题)。我添加了一个屏幕截图。请查看itI。我已更新脚本以解决标题行上的文本换行问题。在excel for dates中,我获取的文本日期有两位数错误!是否可以解决此问题?
import pandas as pd
import pandas.io.formats.style
import os
from pandas import ExcelWriter
import numpy as np
from xlsxwriter.utility import xl_rowcol_to_cell
writer = pd.ExcelWriter('test1.xlsx', engine='xlsxwriter', options={'strings_to_numbers': True}, date_format='mmmm dd yyyy')
#df = pd.read_csv("D:\\Users\\u700216\\Desktop\\Reports\\CD_Counts.csv")
df = pd.read_csv("CD_Counts.csv")
df.to_excel(writer, sheet_name='Sheet1', startrow=1 , startcol=0, header=False, index=False, encoding='utf8')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format_header = workbook.add_format()
format_header.set_align('center')
format_header.set_bold()
format_header.set_text_wrap()
format_header.set_border()
format_data = workbook.add_format()
format_data.set_align('center')
format_data.set_text_wrap()
worksheet.set_column('A:Z', 20, format_data)
worksheet.set_row(0, 40, format_header)
# Write the header manually
for colx, value in enumerate(df.columns.values):
worksheet.write(0, colx, value)
writer.save()