python 读写 Excel 工具代码

使用python做数据处理经常需要操作excel文件,我比较喜欢pandas,可以方便快捷的操作excel,csv等格式的文件。但是有时候只需要读写excel数据,不需要对数据进行复杂的运算,这时候用pandas就感觉大炮打蚊子了。所以,这里基于xlrd和xlwt两个excel操作库封装了几个简单易用的方法。

说明:

  • read方法用于将excel数据转化为二维列表
  • read_dict方法用于将excel数据转化为字典列表
  • write方法用于输出数据到excel

代码如下,excel.py:

import xlrd
import xlwt


def get_real_value(value):
    """
    获取真实值,由于xlrd读取excel的整数时使用float表示,导致整数带有小数点,所以这里需要做处理

    :param value:
    :return:
    """
    if type(value) is float:
        if value % 1 == 0:
            return int(value)
    return value


def read(path, sheet_index=0):
    """
    读取Excel文件

    :param path: 文件路径,包含文件名称
    :param sheet_index: Excel表单索引
    """
    workbook = xlrd.open_workbook(path)
    sheet = workbook.sheet_by_index(sheet_index)
    rows = sheet.nrows
    data = []
    for r in range(rows):
        data.append(list(map(get_real_value, sheet.row_values(r))))
    return data


def read_dict(path, sheet_index=0):
    """
    读取Excel文件\n
    :param path: 文件路径,包含文件名称
    :param sheet_index: Excel表单索引
    """
    workbook = xlrd.open_workbook(path)
    sheet = workbook.sheet_by_index(sheet_index)
    header = sheet.row_values(0)
    rows = []
    for r in range(1, sheet.nrows):
        row_values = sheet.row_values(r)
        row_dict = {}
        for c in range(sheet.ncols):
            cell_value = get_real_value(row_values[c])
            row_dict[header[c]] = cell_value
        rows.append(row_dict)
    return rows


def write(path, rows):
    """
    将数据写入Excel文件\n
    :param path: 文件路径,包含文件名称
    :param rows: 二维数组数据列表
    """
    workbook = xlwt.Workbook(encoding='utf-8')
    # 创建表
    worksheet = workbook.add_sheet('sheet 0')
    # 写数据
    for row_index in range(len(rows)):
        row = rows[row_index]
        for col_index in range(len(row)):
            cell = row[col_index]
            worksheet.write(row_index, col_index, label=cell)
    # 保存
    workbook.save(path)

使用示例:

import excel

excel.write('test.xls', [['编号', '姓名', '年龄'], ['1', '小明', 10], ['2', '花花', 8]])
print(excel.read('test.xls'))
print(excel.read_dict('test.xls'))

输出结果:

[['编号', '姓名', '年龄'], ['1', '小明', 10], ['2', '花花', 8]]
[{'编号': '1', '姓名': '小明', '年龄': 10}, {'编号': '2', '姓名': '花花', '年龄': 8}]

生成的excel文件:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值