반응형
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
반응형
'programing' 카테고리의 다른 글
안드로이드 엔드리스 목록 (0) | 2023.04.22 |
---|---|
Active Directory에서 사용자 목록을 가져오려면 어떻게 해야 합니까? (0) | 2023.04.22 |
지정된 텍스트를 포함하는 파일 찾기 (0) | 2023.04.22 |
'System' 형식의 개체를 캐스팅할 수 없습니다.DBNull'을 클릭하여 'System'을 입력합니다.문자열 (0) | 2023.04.22 |
파일 경로에서 디렉토리 경로를 추출하는 방법 (0) | 2023.04.22 |