code:
# -*- coding: utf-8 -*-
"""
Created on Mon Dec 1 14:05:38 2024
@author: SavingKing
"""
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Alignment
# 創建一個新的Excel工作簿
workbook = openpyxl.Workbook()
worksheet = workbook.active # 獲取活動工作表,默認是第一個工作表
# 向工作表中添加一些數據
data = [
("Name", "Age", "City"),
("Alice", 30, "New York"),
("Bob", 25, "Los Angeles"),
("Charlie", 35, "Chicago")
]
for row in data:
worksheet.append(row)
worksheet.freeze_panes = 'A2' #凍結窗格
# 根據數據調整列寬和行高,並設置置中對齊
for col in worksheet.columns:
max_length = max(len(str(cell.value)) for cell in col) + 2 # 計算最大長度,並留出額外空間
col_number = col[0].column
column_letter = get_column_letter(col_number) # 獲取列字母
worksheet.column_dimensions[column_letter].width = max_length # 設置列寬
for cell in col:
cell.alignment = Alignment(horizontal='center', vertical='center') # 設置單元格的對齊方式為水平和垂直居中
for row in worksheet.iter_rows():
#for row in worksheet.rows:
for cell in row:
lines = str(cell.value).count('\n') + 1 # 計算需要的行數
height = 20 * lines # 假設每行20像素,比原先例子中的15像素略高,以確保對齊顯示良好
row_number = cell.row
if worksheet.row_dimensions[row_number].height is None or \
worksheet.row_dimensions[row_number].height < height:
worksheet.row_dimensions[row_number].height = height # 設置行高
# 保存工作簿到硬盤
workbook.save("example.xlsx")
print("Excel文件已創建並保存!")
輸出的xlsx:
註解說明
導入必要的模塊:除了基本的openpyxl之外,
還導入了get_column_letter用於獲取列的字母表示,
以及Alignment用於設置對齊。
創建工作簿和工作表:
初始化一個新的工作簿並設置活動工作表。
添加數據到工作表:
透過迴圈將預設的數據列表添加到工作表中。
設置列寬和對齊:
根據每列最長的單元格內容調整列寬,
並將每個單元格的內容設置為水平和垂直居中。
調整行高:
根據單元格中的內容可能包含的換行符號來調整行高,
確保內容完整顯示。
保存工作簿:將工作簿保存到文件,
並打印出保存成功的消息。
這樣,我們就完成了一個帶有基本數據、
格式化列寬、行高和置中對齊的Excel工作簿的創建過程。
變數瀏覽器:
推薦hahow線上學習python: https://igrape.net/30afN
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Alignment
# 創建一個新的Excel工作簿
workbook = openpyxl.Workbook()
worksheet = workbook.active # 獲取活動工作表,默認是第一個工作表
# 向工作表中添加一些數據
data = [
("Name", "Age", "City"),
("Alice", 30, "New York"),
("Bob", 25, "Los Angeles"),
("Charlie", 35, "Chicago")
]
for row in data:
worksheet.append(row)
# 根據數據調整列寬和行高,並設置置中對齊
for col in worksheet.columns:
max_length = max(len(str(cell.value)) for cell in col) + 2 # 計算最大長度,並留出額外空間
col_number = col[0].column
column_letter = get_column_letter(col_number) # 獲取列字母
worksheet.column_dimensions[column_letter].width = max_length # 設置列寬
for cell in col:
cell.alignment = Alignment(horizontal='center', vertical='center') # 設置單元格的對齊方式為水平和垂直居中
# 統一設定所有行的行高
for row in worksheet.iter_rows():
for cell in row:
lines = str(cell.value).count('\n') + 1 # 計算需要的行數
height = 20 * lines # 假設每行20像素,比原先例子中的15像素略高,以確保對齊顯示良好
row_number = cell.row
worksheet.row_dimensions[row_number].height = max(worksheet.row_dimensions[row_number].height or 0, height)
# 保存工作簿到硬盤
workbook.save("example.xlsx")
print("Excel文件已創建並保存!")
代碼改進說明
統一處理列寬和行高調整:在設置列寬和行高時,我們使用相似的結構和語法,這樣可以使代碼更加清晰和一致。
行高設置方式的調整:我們將行高的設置放在一個單獨的迴圈中,這樣與列寬的設置分開,但保持了設定方式的一致性。這種方式也更容易理解和維護。
近期留言