programing

Excel에서 셀 너비 조정

skycolor 2023. 4. 22. 09:11
반응형

Excel에서 셀 너비 조정

엑셀 시트에 xlsxwriter를 사용하고 있습니다.텍스트가 셀 크기보다 크면 숨겨지는 문제가 있습니다.

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()

내가 얻는 것

여기에 이미지 설명 입력

폭을 조정하여 기대하는 것

여기에 이미지 설명 입력

다음과 같이 사용할 수 있습니다.

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 코드를 사용하여 파일을 닫은 후에 쉽게 수행할 수 있습니다.파일에 대한 전체 경로를 제공해야 할 수 있습니다.

안타깝게도 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)

아래는 df를 통해 작동했습니다.각 열의 최대 너비를 찾아 여기에 제시된 대로 조정합니다.xslxwriter의 autofit column 시뮬레이션

def get_col_widths(dataframe):
    # First we find the maximum length of the index column   
    idx_max = max([len(str(s)) for s in dataframe.index.values] + [len(str(dataframe.index.name))])
    # Then, we concatenate this to the max of the lengths of column name and its values for each column, left to right
    return [idx_max] + [max([len(str(s)) for s in dataframe[col].values] + [len(col)]) for col in dataframe.columns]

for i, width in enumerate(get_col_widths(dataframe)):
    worksheet.set_column(i, i, width)

데이터가 동적이고 열의 길이가 고정되지 않은 경우 이 방법을 사용할 수 있습니다.

   last_column = 100 // you might increase it
   for column in dataframe:
       column_width = 40 // width
       col_idx = dataframe.columns.get_loc(column)
       writer.sheets['yourheets'].set_column(col_idx, last_column, column_width)
   writer.save()

언급URL : https://stackoverflow.com/questions/33665865/adjust-cell-width-in-excel

반응형