對於openyxl進行Excel操做:
本文介紹簡單的openyxl對Excel的基本操做。
一、建立Excel文件
form openyxl import Workbook
wb = Workbook()
wb 爲一個Workbook對象,而這個對象的屬性咱們尚未具體定義,還在內存中,經過save()方法,咱們將工做簿對象保存在本地。咱們保存的這個工做簿中默認只有一張名爲「Sheet」的工做表。
二、打開已有的Excel文件
form openyxl import load_workbook
wb = load_workbook('test.xlsx')
咱們利用load——workbook()方法打開一個Excel文件,該方法仍是返回了一個Workbook對象。python
三、得到活動工做表
固然,得到活動的工做表以前,若是咱們想要知道工做簿中具體有多少個工做表呢?
代碼以下:
list_ws = wb.get_sheet_names()ide
list_ws是一個列表,元素爲工做薄wb中全部的工做表名稱。若是要返回全部的工做表對象,則使用:wb.worksheetsexcel
如何得到活動的工做表(即當前工做表)
current_ws = wb.get_active_sheet()code
current_ws返回一個當前活動的工做表。orm
四、建立一個工做表對象
ws = wb.create_sheet(index=0, title='ws name')
不帶參數,默認index爲0內存
ws = wb.create_sheet("ws name")utf-8
能夠設置表格的顏色、標題等內容字符串
ws.title = 'ws name change'get
ws.sheet_properties.tabColor = "A78b27"
此外,還能夠得到表格的如下幾個經常使用屬性:
ws.dimensions: 表格的大小,這裏的大小是指含有數據的表格的大小,即:左上角的座標:右下角的座標,空表返回'A1:A1'。
ws.min_row: 表格的最小行
ws.max_row:表格的最大行
ws.min_column:表格的最小列
ws.max_column:表格的最大列
ws.rows:按行獲取單元格(Cell對象)--生成器
columns:按列獲取單元格(Cell對象)--生成器
freeze_panes:凍結窗口
values:按行獲取表格的內容(數據)--生成器
五、建立一個工做表的副本
sourceSheet = wb.active
targetSheet = wb.copy_worksheet(sourceSheet)
六、操做Excel數據(Cell)
(1).訪問一個單元格
c = ws['A4'] #訪問a4單元格
(2).一個單元格賦值
ws['A4'] = 4
c = ws.cell(row=4, column=1, value=4)
內存中建立工做表,不包括單元格,單元格式首次訪問時才建立的
(3).訪問多個單元格
(1)範圍內的單元格使用切片處理
cellRange = ws['A1':'E10']
範圍能夠得到一樣的行或者列
colC = ws['B'] #得到C列數據
colRange = ws['B':'E'] #得到B列到E列數據
rowD = ws[10] #得到第10行的數據
rowRange = ws[5:10] #得到5-10行的數據
(2)元素遍歷
for cell in row:
print(cell)
min_row、max_row、min_column、max_column設定iter_rows的行範圍。
2.列遍歷使用Worksheet的iter_cols()方法
for col in ws.cols(min_row=1,max_row=12,min_column=1,max_column=12):
for cell in col:
print(cell)
3.遍歷全部的行ws.rows或遍歷全部的列ws.columns
print(tuple(ws.rows))
print(tuple(ws.columns))
(4).單元格數據存儲
一旦咱們有了一個Cell對象,咱們就能夠分配一個值:
c.value = 'hello, world' # 能夠是字符串類型
c.value = 2.25 # 可使浮點數類型
您還可使類型和格式推理:
wb = Workbook(guess_types=True)
c.value = '15%' # 百分比
c.value = datetime.datetime.now() # datetime類型
c.value = '21.32' # 將浮點數類型變成字符串賦值
能夠看出單元格存儲的數據是多種類型的。
七、Excel文件保存
wb = Workbook()
wb.save(excel_name)
注:此操做將覆蓋源文件沒有提示。
示例:
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2020/3/17 10:21 # @Author : Zhanxing # @Site : # @File : test.py # @Software: PyCharm import openpyxl def create_sheet_cell(nSheet,nCell): wb = openpyxl.Workbook() for n in range(nSheet): wb.create_sheet(index=n,title="Sheet" + str(n+1)) currentSheet = wb.active for r in range(1,nCell+1): for c in range(1,nCell+1): cell = currentSheet.cell(row=r,column=c,value=r*c) wb.save("test.xlsx") if __name__ == "__main__": nSheet = int(input("輸入電子表格的個數(整數):")) nCell = int(input("輸入乘法表的最大值(整數):")) create_sheet_cell(nSheet, nCell)