python针对Excel表格的操作-Python教程

资源魔 29 0

行使python做excel表格的办法:起首用openpyxl模块关上一个excel文档,指定行指定列的单位格信息;而后挪用【wb.sheetnames】以及【wb.active】猎取工作簿具体信息;最初应用索引读取获得Cell工具。

一 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模块

这是选作需求操作的表格
这里写图片描述
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)

这里写图片描述
输入的是一个工具
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 = '先生信息'print(sheet.title)

这里写图片描述
5> 拜访单位格的一切信息

# 5. 拜访单位格的一切信息print(sheet.rows)  
# 前往一个天生器, 蕴含文件的每一一行内容, 能够经过便当拜访.
# 轮回遍历每一一行for row in sheet.rows:    
# 轮回遍历每个单位格for cell in row:        
# 猎取单位格的内容
   print(cell.value, end=',')
 print()

这里写图片描述
6> 保留修正信息

#6.保留修正信息wb.save(filename='Boom.xlsx')

这里写图片描述
因而操作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="排序商品信息")

这里写图片描述

* 三 更改表格的内容*
每一一行代表一次独自的发卖。列辨别是发卖产物的类型(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
原文件关上状况:
这里写图片描述
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表格的操作的具体内容,更多请存眷资源魔其它相干文章!

标签: excel Python python教程 python编程 python使用问题

抱歉,评论功能暂时关闭!