1. 程式人生 > 其它 >【python學習筆記】openpyxl操作excel高階操作

【python學習筆記】openpyxl操作excel高階操作

path = os.path.join(os.getcwd(), '專案1', '問題單總體彙總.xlsx')
wb = openpyxl.load_workbook(path, data_only=True)  # 增加data_only=True引數,讀取單元格的內容不會顯示為公式
ws = wb.active
'插入公式'
ws['B82'] = '=sum(B2:B81)'
print(ws['B82'].value)  # 公式計算成功後要儲存一次excel檔案,要不然讀取的為None,儲存一次重新執行獲取正常24548

'''設定行高列寬'''
ws.row_dimensions[1].height = 30  # 行高1個數值表示1/72英寸,大約0.35mm  注意行為數字而非字串
ws.column_dimensions['A'].width = 70 # 列寬1個數值表示一個字元大小

'''合併和拆分單元格'''
ws.merge_cells('C2:D2')
ws['C2'] = '合併'
ws.unmerge_cells('C2:D2')

'''凍結視窗:凍結對應單元格上一行和左邊一列'''
ws.freeze_panes = 'A2'  # 凍結首行 兩條命令後覆蓋
ws.freeze_panes = 'B1'  # 凍結首列
ws.freeze_panes = 'B2'  # 凍結首行首列 注意沒有解凍

'''建立圖表 柱狀圖'''
'''建立圖表的步驟:
1、讀取資料
2、建立如表物件
3、將資料新增到圖表
4、將圖表新增到對應的表裡面'''
maxCol = openpyxl.utils.column_index_from_string('J')
minCol = openpyxl.utils.column_index_from_string('D')
values = openpyxl.chart.Reference(ws, min_row=4, min_col=5, max_col=maxCol, max_row=18) # 引用工作表的單元範圍,用作圖表新增資料
labels = openpyxl.chart.Reference(ws, min_row=5, min_col=minCol, max_row=18) # 引用工作表的單元範圍,用作X軸標籤使用
# chart = openpyxl.chart.BarChart3D() # 柱狀3D圖
chart = openpyxl.chart.BarChart() # 柱狀圖
chart.title = '異常問題單分佈情況'
# chart.y_axis.title = '異常問題數量'  # 設定y軸標題
# chart.x_axis.title = '元件' # 設定x軸標題
# chart.legend = None  #取消圖表圖例
chart.add_data(values, titles_from_data=True) # 圖表新增一個範圍資料,每個列視為一個數據系列
chart.set_categories(labels) # 圖表設定類別,X軸標籤
# chart.style = 13 # 圖示樣式 綠色
chart.grouping = "stacked"  # 堆積
# chart.shape = 4
# chart.grouping = "percentStacked"
# chart.type = "col"  # 定義垂直條形圖 預設值
# chart.type = "bar"  # 定義水平條形圖
chart.overlap = 100  # 層疊圖時需要設定重疊為100 來定義使用堆疊圖表
ws.add_chart(chart, 'D21') # 在表中的D21位置插入圖表
wb.save(path)   # 生成excel檔案