查詢欄位中的資料最大的長度,做為調整欄位寛度的依據。
原使用len計算欄位資料長度,中文會被計算佔1格,故在寫一個計算中文字來增加長度。
使用:column_dimensions[欄位('A'、'B'.....].width
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import openpyxl
# 讀取EXCEL檔案。 wb = openpyxl.load_workbook("D:\\Train\\DataColumnwidth.xlsx") # 讀取工作表。 Sheet = wb['Data']
#調整Excel欄位宽度。 def Column_width(): #設定起始欄位。 x=1 #判斷第一排欄位不是空值就執行設定欄位宽度。 while Sheet.cell(row=1, column=x).value != None: #將數字轉成文字,使用ASCII CODE。65:A、66:B column = str(chr(64 + x)) #設定指定欄位宽度,呼叫max_width副程式判斷目前欄位中資料長度最長值。 Sheet.column_dimensions[column].width =max_width(x) #換下欄。 x = x + 1 wb.save("D:\\Train\\DataColumnwidth.xlsx")
def max_width(x): #設定最大長度初始值。 Len_max=0 #檢查整欄。 for D in Sheet: #判斷是否有文字有的話長度多佔一格。 String = 0 #將目前欄位的值從字串轉成字元。 for j in str(Sheet.cell(row=D[0].row, column=x).value): #判斷字元不是字母和數字,就是文中長度+1。 if not j.encode('utf-8').isalpha() and not j.isdigit(): String =String + 1 #判斷欄位中資料是否為空值,是的話跳過,防止空值無法使用len計算長度。 if Sheet.cell(row=D[0].row, column=x).value == None: continue #判斷欄位的資料長度加文字多一格的長度,比記錄中的長度大就進行替換。 elif Len_max < len(str(Sheet.cell(row=D[0].row, column=x).value))+String: Len_max = len(str(Sheet.cell(row=D[0].row, column=x).value))+String #回傳最大長度值。 return(Len_max)
if __name__ == '__main__': Column_width()
|
結果:
沒有留言:
張貼留言