一 python與Excel表格 Excel 是 Windows 環(huán)境下流行的,、強(qiáng)大的電子表格應(yīng)用,。openpyxl 模塊讓 Python 程序能讀取和修改 Excel電子表格文件 1)excel文檔的基本定義 - 工作薄(workbook) - 工作表(sheet) - 活動表(active sheet) - 行(row): 1,2,3,4,5,6…….. - 列(column): A,B,C,D…….. - 單元格(cell): B1, C1 2)python對于Excel表格操作的模塊有很多種,,這里選用openpyxl模塊 但是openpyxl模塊時需要進(jìn)行安裝的 利用以上命令來安裝openpyxl模塊 這是選作需要操作的表格 1> 打開一個excel文檔 import openpyxl# 1. 打開一個excel文檔, class 'openpyxl.workbook.workbook.Workbook'實例化出來的對象wb = openpyxl.load_workbook('Book.xlsx')print(wb, type(wb))# 獲取當(dāng)前工作薄里所有的工作表,, 和正在使用的表;print(wb.sheetnames)print(wb.active)
輸出的是一個對象 2> 選擇要操作的工作表 # 2. 選擇要操作的工作表,, 返回工作表對象sheet = wb['Sheet1']# 獲取工作表的名稱print(sheet.title) 3> 指定行指定列的單元格信息 # 3. 返回指定行指定列的單元格信息print(sheet.cell(row=1, column=2).value)cell = sheet['B1']print(cell)print(cell.row, cell.column, cell.value)
4> 獲取工作表中行和列的最大值 # 4. 獲取工作表中行和列的最大值print(sheet.max_column)print(sheet.max_row)sheet.title = '學(xué)生信息'print(sheet.title) 5> 訪問單元格的所有信息 # 5. 訪問單元格的所有信息print(sheet.rows) # 返回一個生成器, 包含文件的每一行內(nèi)容,, 可以通過便利訪問.# 循環(huán)遍歷每一行for row in sheet.rows: # 循環(huán)遍歷每一個單元格 for cell in row: # 獲取單元格的內(nèi)容 print(cell.value, end=',') print()
6> 保存修改信息 # 6. 保存修改信息wb.save(filename='Boom.xlsx') 因此操作Excel表格可詳細(xì)的概括如下: 1.導(dǎo)入 openpyxl 模塊,。 2.調(diào)用 openpyxl.load_workbook()函數(shù)。 3.取得 Workbook 對象,。 4.調(diào)用 wb.sheetnames和 wb.active 獲取工作簿詳細(xì)信息,。 5.取得 Worksheet 對象。 6.使用索引或工作表的 cell()方法,帶上 row 和 column 關(guān)鍵字參數(shù),。 7.取得 Cell 對象,。 8.讀取 Cell 對象的 value 屬性 二 Excel簡單實例 - 定義一個函數(shù), readwb(wbname, sheetname=None) - 如果用戶指定sheetname就打開用戶指定的工作表,, 如果沒有指定,, 打開active sheet; - 根據(jù)商品的價格進(jìn)行排序(由小到大), 保存到文件中;商品名稱:商品價格:商品數(shù)量 - 所有信息,, 并將其保存到數(shù)據(jù)庫中 import osimport openpyxldef readwb(wbname, sheetname=None): # 打開工作薄 wb = openpyxl.load_workbook(wbname) # 獲取要操作的工作表 if not sheetname: sheet = wb.active else: sheet = wb[sheetname] # 獲取商品信息保存到列表中 #[ ['name', price, count] all_info = [] for row in sheet.rows: child = [cell.value for cell in row] all_info.append(child) return sorted(all_info, key=lambda item: item[1])def save_to_excel(data, wbname, sheetname='sheet1'): ''' 將信息保存到excel表中; [[' BOOK', 50, 3], ['APPLE', 100, 1], ['BANANA', 200, 0.5]] ''' print('寫入Excel[%s]中.......' %(wbname)) # 打開excel表, 如果文件不存在,, 自己實例化一個WorkBook對象 wb = openpyxl.Workbook() # 修改當(dāng)前工作表的名稱 sheet = wb.active # 修改工作表的名稱 sheet.title = sheetname for row, item in enumerate(data): # 0 [' BOOK', 50, 3] for column, cellValue in enumerate(item): # 0 ' BOOK' sheet.cell(row=row+1, column=column+1, value=cellValue) # ** 往單元格寫入內(nèi)容 # sheet.cell['B1'].value = 'value' # sheet.cell(row=1, column=2, value='value') # 保存寫入的信息 wb.save(filename=wbname) print('寫入成功!')data = readwb(wbname='Book1.xlsx')save_to_excel(data, wbname='Book2.xlsx', sheetname='排序商品信息')
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
* 三 更改表格的內(nèi)容* 每一行代表一次單獨的銷售。列分別是銷售產(chǎn)品的類型(A),、產(chǎn)品每磅的價格 (B),、銷售的磅數(shù)(C),以及這次銷售的總收入。TOTAL 列設(shè)置為 Excel 公式,將每磅的成本乘以銷售的磅數(shù), 并將結(jié)果取整到分,。有了這個公式,如果列 B 或 C 發(fā)生變化,TOTAL 列中的單元格將自動更新. 需要更新的價格如下: Celery 1.19 Garlic 3.07 Lemon 1.27 現(xiàn)在假設(shè) Garlic,、 Celery 和 Lemons 的價格輸入的不正確。這讓你面對一項無聊 的任務(wù):遍歷這個電子表格中的幾千行,更新所有 garlic,、celery 和 lemon 行中每磅 的價格,。你不能簡單地對價格查找替換,因為可能有其他的產(chǎn)品價格一樣,你不希 望錯誤地“更正”。對于幾千行數(shù)據(jù),手工操作可能要幾小時 下載文件 : produceSales.xlsx 原文件打開情況: 1> 首先需要打開電子表格文件 2> 然后查找每一行內(nèi)容,,檢查列 A (即列表的第一個索引)的值是不是 Celery,、Garlic 或 Lemon 3> 如果是,更新列 B 中的價格(即列表第二個索引) 4> 最后將該表格保存為一個新的文件 import osimport openpyxldef readwb(wbname, sheetname=None): # 打開工作薄 wb = openpyxl.load_workbook(wbname) # 獲取要操作的工作表 if not sheetname: sheet = wb.active else: sheet = wb[sheetname] # 獲取商品信息保存到列表中 all_info = [] for row in sheet.rows: child = [cell.value for cell in row] all_info.append(child) if child[0] == 'Celery': child[1] = 1.19 if child[0] == 'Garlic': child[1] = 3.07 if child[0] == 'Lemon': child[1] = 1.27 return all_infodef save_to_excel(data, wbname, sheetname='sheet1'): ''' 將信息保存到excel表中; ''' print('寫入Excel[%s]中.......' % (wbname)) # 打開excel表, 如果文件不存在,, 自己實例化一個WorkBook對象 wb = openpyxl.Workbook() # 修改當(dāng)前工作表的名稱 sheet = wb.active # 修改工作表的名稱 sheet.title = sheetname for row, item in enumerate(data): # 0 [' BOOK', 50, 3] for column, cellValue in enumerate(item): # 0 ' BOOK' sheet.cell(row=row + 1, column=column + 1, value=cellValue) # ** 往單元格寫入內(nèi)容 # sheet.cell['B1'].value = 'value' # sheet.cell(row=1, column=2, value='value') # 保存寫入的信息 wb.save(filename=wbname) print('寫入成功!')data = readwb(wbname='/home/kiosk/Desktop/day17/produceSales.xlsx')save_to_excel(data, wbname='new_Sales.xlsx', sheetname='商品信息') - 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
表示寫入新數(shù)據(jù)成功 這是更改后的保存的新表格
|