web-dev-qa-db-ja.com

Excelでセル幅を調整する

Xlsxwriterを使用してExcelシートに書き込みます。私は問題に直面しています:テキストがセルサイズを超えると、テキストが非表示になります。

import xlsxwriter

workbook = xlsxwriter.Workbook("file.xlsx")
worksheet1 = workbook.add_worksheet()

worksheet1.write(1, 1,"long text hidden test-1" )
worksheet1.write(2, 1,"long text hidden test-2")
worksheet1.write(3, 1,"short-1")
worksheet1.write(4, 1,"short-2")
worksheet1.write(1, 2,"Hello world" )
worksheet1.write(2, 2,"Hello world")
worksheet1.write(3, 2,"Hello world")
worksheet1.write(4, 2,"Hello world")

workbook.close()

私が得ているもの

enter image description here

幅を調整することで期待すること

enter image description here

15
Ravichandra

次のように set_column を使用できます。

worksheet1.set_column(1, 1, 25)

これは次のように定義されます。

set_column(first_col, last_col, width, cell_format, options)

すべての列を自動的に自動調整する場合は、次のようにwin32comインターフェイスを使用する必要があります。

import win32com.client as win32
Excel = win32.gencache.EnsureDispatch('Excel.Application')
wb = Excel.Workbooks.Open(r'file.xlsx')
ws = wb.Worksheets("Sheet1")
ws.Columns.AutoFit()
wb.Save()
Excel.Application.Quit()

これは、現在のxlsxwriterコードを使用してファイルを閉じた後に簡単に実行できます。ファイルへのフルパスを指定する必要がある場合があります。

30
Martin Evans

残念ながら、xlsxwriterは自動調整オプションを提供しません。

ただし、各列の最大エントリを追跡し、set columnコマンドで最後に列幅を設定できます。

set_column(first_col, last_col, width, cell_format, options)

たとえば、あなたのケースでは、B列の幅を最大の文字列の長さに設定する必要があります。

width= len("long text hidden test-1")
worksheet1.set_column(1, 1, width)
8
Fahad Sarfraz