python操作excel,支持xls,xlsx

# coding=utf-8
import logging
import xlrd  # 读模块
import xlwt  # 写模块

logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)


def read_excel(excel_path, sheet_index=None, sheet_name=None, has_table_head=True):
    """
        读取excel文件方法说明
    :return:
    """
    global sheet_v
    data = xlrd.open_workbook(excel_path)
    logger.info(str(data.sheet_names()))
    if sheet_index is not None:
        sheet_v = data.sheet_by_index(sheet_index)  # 索引法
    elif sheet_name:
        sheet_v = data.sheet_by_name(sheet_name)  # 表名法
    else:
        sheet_v = data.sheet_by_index(0)
    logger.info("row number: " + str(sheet_v.nrows))
    logger.info("row number: " + str(sheet_v.ncols))
    cell_list = []
    if has_table_head:
        table_head_list = sheet_v.row(0)
        for r in range(1, sheet_v.nrows):
            row_dict = {}
            for c in range(0, sheet_v.ncols):
                row_dict[table_head_list[c].value] = sheet_v.cell(r, c).value
            cell_list.append(row_dict)
    else:
        for i in range(0, sheet_v.nrows):
            row_list = []
            for j in range(0, sheet_v.ncols):
                row_list.append(sheet_v.cell(i, j).value)
            cell_list.append(row_list)
    return cell_list


def write_excel(file_name, sheet_name, data, table_head=None):
    """
    :param file_name: excel文件名。例:'test.xls'
    :param sheet_name: excel工作表名。例:Sheet1
    :param data: 二维数列,一维为列表,二维为字典,将要写入表内的数据:行*列
    :param table_head: 表头列表。例:[id, name, sex]
    :return:
    """
    file_v = xlwt.Workbook()
    sheet1 = file_v.add_sheet(sheet_name, cell_overwrite_ok=True)
    begin_row = 0
    end_row = len(data)
    if table_head:
        begin_row = 1
        end_row += 1
        for i in range(0, len(table_head)):
            sheet1.write(0, i, table_head[i])

    for row in range(begin_row, end_row):
        for col in range(0, len(table_head)):
            sheet1.write(row, col, str(data[row - begin_row].generate_api_testcase(table_head[col])))
    file_v.save(file_name)
    logger.info('已生成excel文件!')

if __name__ == '__main__':
    write_excel(
        sheet_name='friendSheet',
        data=[[1, '小丽', 'girl'], [2, '小明', 'boy'], [3, '小王', 'boy']],
        file_name='friend.xls'
    )
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值