iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
Python

運用 Python 操作 Excel系列 第 22

Python 操作 Excel -小試身手(使輸出資料對齊)

  • 分享至 

  • xImage
  •  

資料對齊

前一篇看到輸出結果資料正確但看起來亂亂的
可以使用 str.ljust() 方法來確保每個輸出的欄位都有相同的寬度,這樣即使字串長度不同,輸出時也能對齊。

範例程式

#ch2_10.py
import openpyxl

fn = "out1_5.xlsx"
wb = openpyxl.load_workbook(fn,data_only=True) 
ws = wb.active
# 設定每個欄位的固定寬度
column_widths = [15, 15]  # 品項欄寬設為 15,單價欄設為 15

for i in range(1, ws.max_row + 1):  # row做索引增值
    row_data = []  # 用來儲存每行的非空資料
    for j in range(1, ws.max_column + 1):  # column做索引增值
        cell_value = ws.cell(row=i, column=j).value
        
        # 如果儲存格的值不為 None 或空字串,才進行處理
        if cell_value is not None and cell_value != "":
            # 第1欄 (品項) 使用 ljust 左對齊
            if j == 1:
                row_data.append(str(cell_value).ljust(column_widths[j-1]))
            # 第2欄 (單價) 使用 rjust 右對齊
            elif j == 2:
                row_data.append(str(cell_value).rjust(column_widths[j-1]))
    
    # 如果該行有非空值,則輸出
    if row_data:
        print(" ".join(row_data))

說明:

忽略空字串和 None 值: 在輸出過程中發現excel表會有些空字串,通過檢查 if cell_value is not None and cell_value != "" 來忽略空的儲存格內容,這樣可以避免空白格出現在輸出結果中。

用列表收集行資料: 用一個 row_data 列表來收集每一行的非空資料,這樣可以避免直接輸出空白的資料。

輸出行資料: 只有在該行有資料時才會輸出,確保不輸出空行。

column_widths 調整: 可以自行設定每個欄位的寬度,第一列(品項)設定為15,第二列(單價)設定為15,這樣可以確保數字的整齊排列。

執行結果

https://ithelp.ithome.com.tw/upload/images/20241002/20168857bZlxpi4c6Z.png


上一篇
[Day21] Python 操作 Excel - 小試身手(輸出整個儲存格內容)
下一篇
[Day23] Python 操作 Excel - 小試身手(運用行列屬性 回傳範圍)
系列文
運用 Python 操作 Excel30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言