К сожалению, нет способа указать «AutoFit» для столбца в формате файла Excel. Эта функция доступна только во время выполнения из Excel. В вашем приложении можно смоделировать «AutoFit», отслеживая максимальную ширину данных в столбце при их записи, а затем корректируя ширину столбца в конце. Из FAQ в документации.
Вы можете обновить свой код и отслеживать длину данных столбца при записи данных внутри столбца. Это будет внутри вашего пока l oop.
def excel(request):
ans = request.POST.getlist('ans[]')
ans_final=[]
rows = request.POST.get('rows')
for each_ele in ans:
each_ele = each_ele.split('.')
each_ele[0] = each_ele[0][:-2]
each_ele[1] = each_ele[1][:-2]
fin = each_ele[0]+' - '+each_ele[1]
ans_final.append(fin)
workbook = xlsxwriter.Workbook('/home/Desktop/status.xlsx')
worksheet = workbook.add_worksheet('Test_Data')
bold = workbook.add_format({'bold': True})
for i in range(len(ans_final)):
worksheet.write(0, i,ans_final[i],bold)
row_index=1
row_count = int(rows)
cell_width = {}
while(row_count):
col_index=0
for each_ele in ans:
cell = worksheet.cell(row_index, col_index)
cell.value = eval(each_ele)
if cell.column_letter in cell_width:
cell_width[cell.column_letter].append(len(eval(each_ele)))
else:
cell_width[cell.column_letter] = [len(cell_value[0])]
col_index += 1
row_index += 1
row_count -= 1
for key in cell_width.keys():
width = max(cell_width[key])
worksheet.column_dimensions[key].width = width + 5
workbook.close()
return JsonResponse({'ok':'ok'})
Здесь я сохраняю длину каждого значения в списке, затем получаю максимальное число и затем устанавливаю его как ширину столбца. Я добавляю дополнительные 5, чтобы добавить дополнительное пространство после содержимого. Я надеюсь, что это поможет вам. :)