首頁 > 後端開發 > Python教學 > python針對Excel表格的操作

python針對Excel表格的操作

卡哇伊
發布: 2020-07-10 11:53:56
原創
6837 人瀏覽過

利用python做excel表格的方法:首先用openpyxl模組打開一個excel文檔,指定行指定列的單元格信息;然後調用【wb.sheetnames】和【wb.active】獲取工作簿詳細信息;最後使用索引讀取取得Cell物件。

python針對Excel表格的操作

#一  python與Excel表格 

Excel 是Windows 環境下流行的、強大的電子表格應用程式。 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模組時需要進行安裝的

pip install openpyxl
登入後複製

利用以上指令來安裝openpyxl模組

這是選取需要操作的表格
python針對Excel表格的操作
1>   開啟一個excel文件

import openpyxl# 1. 打开一个excel文档, 
class 'openpyxl.workbook.workbook.Workbook'实例化出来的对象wb = openpyxl.load_workbook('Book.xlsx')
print(wb, type(wb))# 获取当前工作薄里所有的工作表,和正在使用的表;print(wb.sheetnames)
print(wb.active)
登入後複製

python針對Excel表格的操作
#輸出的是一個物件
2>  選擇要操作的工作表

# 2.选择要操作的工作表,返回工作表对象sheet=wb['Sheet1']
#获取工作表的名称print(sheet.title)
登入後複製

python針對Excel表格的操作
3>  指定行指定列的儲存格資訊

# 3. 返回指定行指定列的单元格信息print(sheet.cell(row=1, column=2).value)
cell = sheet['B1']print(cell)print(cell.row, cell.column, cell.value)
登入後複製

python針對Excel表格的操作
#4>取得工作表中行和列的最大值

# 4. 获取工作表中行和列的最大值print(sheet.max_column)print(sheet.max_row)
sheet.title = '学生信息'print(sheet.title)
登入後複製

python針對Excel表格的操作
5>  存取儲存格的所有資訊

# 5. 访问单元格的所有信息print(sheet.rows)  
# 返回一个生成器, 包含文件的每一行内容, 可以通过便利访问.
# 循环遍历每一行for row in sheet.rows:    
# 循环遍历每一个单元格for cell in row:        
# 获取单元格的内容
   print(cell.value, end=',')
 print()
登入後複製

python針對Excel表格的操作
6>  儲存修改資訊

#6.保存修改信息wb.save(filename='Boom.xlsx')
登入後複製

python針對Excel表格的操作
因此操作Excel表格可詳細的概括如下:
1. 導入openpyxl 模組。
2.呼叫 openpyxl.load_workbook()函數。
3.取得 Workbook 物件。
4.呼叫 wb.sheetnames和 wb.active 以取得工作簿詳細資料。   
5.取得 Worksheet 物件。
6.使用索引或工作表的 cell()方法,帶上 row 和 column 關鍵字參數。
7.取得 Cell 物件。
8.讀取Cell 物件的value 屬性
二  Excel簡單實例
- 定義一個函數,readwb(wbname, sheetname=None)
- 如果使用者指定sheetname就開啟使用者指定的工作表, 如果沒有指定, 開啟active sheet;
-  依照商品的價格進行排序(由小到大), 儲存到文件中;商品名稱:商品價格:商品數量
- 所有訊息,並將其保存到資料庫中

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()    # 修改当前工作表的名称
    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) # ** 往单元格写入内容
    # 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="排序商品信息")
登入後複製

python針對Excel表格的操作

* 三  更改表格的內容*
每一行代表一次單獨的銷售。列分別是銷售產品的類型(A)、產品每磅的價格
(B)、銷售的磅數(C),以及這次銷售的總收入。 TOTAL 欄位設定為 Excel 公式,將每磅的成本乘以銷售的磅數,
並將結果取整到分。有了這個公式,如果列B 或C 發生變化,TOTAL 列中的單元格將自動更新.

#需要更新的價格如下:
Celery  1.19
Garlic  3.07
Lemon   1.27

现在假设 Garlic、 Celery 和 Lemons 的价格输入的不正确。这让你面对一项无聊
的任务:遍历这个电子表格中的几千行,更新所有 garlic、celery 和 lemon 行中每磅
的价格。你不能简单地对价格查找替换,因为可能有其他的产品价格一样,你不希
望错误地“更正”。对于几千行数据,手工操作可能要几小时
下载文件 : produceSales.xlsx
原文件打开情况:
python針對Excel表格的操作
1> 首先需要打开电子表格文件
2> 然后查找每一行内容,检查列 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()    
    # 修改当前工作表的名称
    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)    
            # ** 往单元格写入内容
    # 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="商品信息")
登入後複製

python針對Excel表格的操作
表示写入新数据成功
python針對Excel表格的操作


这是更改后的保存的新表格

以上是python針對Excel表格的操作的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板