![](/img/trans.png)
[英]How to wrap text with in a column while writing in csv file using python
[英]Reading csv file and writing the df to excel with text wrap
我想獲得以下輸出。 除了標題之外,所有行和列都是文本換行:
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.to_excel(writer,sheet_name='Sheet1',startrow=1 , startcol=1, header=True, index=False, encoding='utf8')
workbook = writer.book
worksheet = writer.sheets['Sheet1']
format = workbook.add_format()
format1 = workbook.add_format({'bold': True, 'align' : 'left'})
format.set_align('Center')
format1.set_align('Center')
format.set_text_wrap()
format1.set_text_wrap()
worksheet.set_row(0, 20, format1)
worksheet.set_column('A:Z', 30, format)
writer.save()
format適用於除標題之外的所有行和列。 我不知道為什么格式不應用於第一列(標題)或我想手動添加列標題數字,如0,1,2等,以便我將轉為標題因此所有的行和列將被格式化
在上面的截圖中,換行文本不適用於A1到E1,C1列有很多空格的標題。 如果我手動點擊換行文本它會對齊,否則所有標題都不會使用文本換行進行格式化。
一些問題:
您的代碼正在嘗試格式化標題,但是當您使用.to_excel()
創建文件時,您會告訴它從第1, 1
行開始。 雖然細胞編號為0, 0
。 所以,如果你改為:
df.to_excel(writer,sheet_name='Sheet1', startrow=0, startcol=0, header=True, index=False, encoding='utf8')
您將看到col A
和第1
行都被格式化:
即Col A
為0
, Row 1
0
使用Pandas編寫標題時,它會應用自己的格式,這將覆蓋您提供的格式。 要解決此問題,請關閉標頭並使其僅從第1行開始寫入數據並手動編寫標頭。
以下可能更清楚一點:
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()
哪個會給你:
注意:也可以告訴Pandas使用的樣式,或強制它為None
這樣它將繼承自己的樣式。 該方法的唯一缺點是,執行此操作所需的方法取決於正在使用的Pandas的版本。 此方法適用於所有版本。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.