python与Excel - openpyxl

python与Excel文档

Excel是 Windows 环境下流行的、强大的电子表格应用。openpyxl模块让Python 程序能读取和修改 Excel电子表格文件。

excel文档的基本定义

工作薄(workbook)
工作表(sheet)
活动表(active sheet)
行(row): 1,2,3,4,5,6……..
列(column): A,B,C,D……..
单元格(cell): B1, C1

安装openpyxl模块

Python没有自带opwenpyxl

pip install openpyxl

读取Excel文档

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

需求:

# 商品名称    商品价格   商品数量
 - 定义一个函数, readwb(wbname, sheetname=None)
 - 如果用户指定sheetname就打开用户指定的工作表, 如果没有指定, 打开active sheet;
 -  根据商品的价格进行排序(由小到大),保存到文件中;商品名称:商品价格:商品数量
 - 所有信息, 并将其保存到数据库中;

import os
import openpyxl

def 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="排序商品信息")

这里写图片描述
这里写图片描述
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zcx1203/article/details/82661294