excel与python

1. Excel的基本定义

  • 工作薄(workbook):一个Excel电子表格;
  • 工作表(sheet): 每个工作薄里面包含的表, 默认有3个;
  • 活动表(active sheet): 用户当前查看的工作表;
  • 单元格(cell): 特定的行和列构成的格子;
  • 列(column): 列地址是从A开始的;
  • 行(row):行地址是从1开始的;

2. Excel版本 < 2007,则使用xlrd模块实现

import xlrd
wb = xlrd.open_workbook('/tmp/Book1.xls')
print(wb.sheet_names())

3.excel与python结合的基本操作

import openpyxl

# 1. 导入工作薄
wb = openpyxl.load_workbook('/tmp/Book1.xlsx')

# 2. 查看包含的工作表
print(wb.sheetnames)

# 3. 查看当前活动表
print(wb.active)

# 4. 从工作薄中选择要操作的工作表
sheet = wb['修改的工作表']

# 5. 查看制定单元格的数据
# 第一种方法
cell = sheet['B3']
# 第二种方法
cell = sheet.cell(row=3, column=2)

# 6. 获取单元格详细信息
print(cell.value)

# 7. 修改单元格信息
cell.value = 1111111

# 8. 获取工作表的总行和总列数
print(sheet.max_column)
print(sheet.max_row)

# 9. 修改单元表的名称
print(sheet.title)
sheet.title = "修改的工作表"

# 10. 遍历历EXCEL表格的所有数据;
print(sheet.rows)   
# 返回的是一个生成器
# 遍历每一行
for row in sheet.rows:
    # 获取每一行, 每个单元格的数据
    for cell in row:
        print(cell.value, end='\t')
    print('\n')

# 11. 保存修改的信息
wb.save('/tmp/Book1.xlsx')

4.表格的读写操作

import openpyxl

def create_to_excel(wbname, data, sheetname='Sheet1', ):
    """
    将指定的信息保存到新建的excel表格中;

    :param wbname:
    :param data: 往excel中存储的数据;
    :param sheetname:
    :return:
    """

    print("正在创建excel表格%s......" % (wbname))

    # wb = openpyxl.load_workbook(wbname) 
    # 如果表格文件存在,加载表格即可

    #  如果文件不存在, 自己实例化一个WorkBook的对象;
    wb = openpyxl.Workbook()

    # 获取当前活动工作表的对象
    sheet = wb.active

    # 修改工作表的名称
    sheet.title = sheetname

    # 将数据data写入excel表格中;
    print("正在写入数据........")
    for row, item in enumerate(data):  # data发现有4行数据, item里面有三列数据;
        for column, cellValue in enumerate(item):
            cell = sheet.cell(row=row + 1, column=column + 1, value=cellValue)
            # cell = sheet.cell(row=row+1, column=column + 1)
            # cell.value = cellValue

    wb.save(wbname)
    print("保存工作薄%s成功......." % (wbname))

def readwb(wbname, sheetname=None):
    # 1. 加载工作薄
    wb = openpyxl.load_workbook(filename=wbname)

    # 2. 选择操作的工作表
    if not sheetname:
        sheet = wb.active
    else:
        sheet = wb[sheetname]

    #  读取数据, 存储为python的数据结构
    goodsInfo = []
    for row in sheet.rows:
        rowValues = [cell.value for cell in row]
        goodsInfo.append(rowValues)
    return goodsInfo

if __name__ == '__main__':
    data = [
        ['书记名称', '数量', '价格'],
        ['python核心编程', 60, 90],
        ['Java核心编程', 50, 120],
        ['Php核心编程', 100, 80],
    ]

    print("1. " + "*" * 50)
    create_to_excel('doc/excel01.xlsx', data, '书籍信息统计')

    goodsInfo = readwb('doc/excel01.xlsx', '书籍信息统计')
    # print(goodsInfo)

    print("2. " + "*" * 50)
    # 按照商品数量进行排序 sorted()
    numSortInfo = [goodsInfo[0]]+  sorted(goodsInfo[1:], key=lambda x: x[1])
    print(numSortInfo)
    create_to_excel('doc/sorted_by_num.xlsx', numSortInfo, '书籍信息统计按照数量排序')

    print("3. " + "*" * 50)
    #  按照商品价格进行排序 sorted()
    priceSortInfo = [goodsInfo[0]] + sorted(goodsInfo[1:], key=lambda x: x[1])
    print(priceSortInfo)
    create_to_excel('doc/sorted_by_price.xlsx', numSortInfo, '书籍信息统计按照价格排序')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值