2021年11月15日 星期一

Python-Openpyxl_調整Excel欄位寛度

 查詢欄位中的資料最大的長度,做為調整欄位寛度的依據。

原使用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()


結果:




沒有留言:

張貼留言

Ubuntu-Journalctl查看系統日誌

 近期所使用Ubuntu系統24小時開著,進行跑Python程式使用,但跑個2~3天,排程就無法正常寄信,SSH連線也無法正常連線,經查看後為wifi連線問題,暫先使用腳本排程進行重開wifi。 以下為記錄Journalctl指令。 使用Journalctl來從系統日誌上查看看問...