【python學習筆記】openpyxl操作excel高階操作
阿新 • • 發佈:2021-11-19
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檔案