Използвам 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()
Какво получавам
Какво очаквам с коригирани ширини
Отговори:
22 за отговор № 1Можете да използвате 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 код. Забележете, че може да се наложи да предоставите пълен път към файла.
5 за отговор № 2
За съжаление xlsxwriter не предлага опция за автоматично настройване.
Въпреки това можете да проследите най-големия запис за всяка колона и след това да зададете ширината на колоната в края с команда за колона.
set_column(first_col, last_col, width, cell_format, options)
Например, в случая трябва да зададете ширината на колона B до дължината на най-големия низ.
width= len("long text hidden test-1")
worksheet1.set_column(1, 1, width)