簡體   English   中英

讀取csv文件並使用文本換行將df寫入excel

[英]Reading csv file and writing the df to excel with text wrap

我想獲得以下輸出。 除了標題之外,所有行和列都是文本換行:

Excel截圖

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列有很多空格的標題。 如果我手動點擊換行文本它會對齊,否則所有標題都不會使用文本換行進行格式化。

一些問題:

  1. 您的代碼正在嘗試格式化標題,但是當您使用.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行都被格式化:

    excel截圖

    Col A0Row 1 0

  2. 使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM