python利用xlwings写入一行或一列Excel数据

from typing import Union

import xlwings as xw


fp = r"C:\Users\user\Desktop\测试.xlsx"
# 打开Excel应用程序
app = xw.App(visible=False)  # 后台写入,不展示excel界面

# 打开Excel文件
wb = xw.Book(fp)

新增sheet

# 新增sheet页时,可选择新增位置,由参数before或after控制
sht = wb.sheets.add('result')

写入行

def write_rows(io, sheet: Union[int, str] = 0, row='A1', data=None):
    """
    写入一行或多行数据
    :param io: Excel文件
    :param sheet: sheet,int或者str类型
    :param row: 从哪一行开始写入,如:'A1'
    :param data: 要写入的数据,str、list或者tuple,e.g. [[1, 9], [2, 8], [3, 7], [4, 6]]
    :return:
    """
    wb = xw.Book(io)
    if isinstance(sheet, str):
        sht = wb.sheets(sheet)
    else:
        sht = wb.sheets[sheet]
    sht.range(row).value = data
    wb.save()

    # 关闭工作簿和Excel应用程序
    wb.close()
    app.quit()

写入多行时,效果如下:

写入列

def write_cols(io, sheet: Union[int, str] = 0, col='A1', data=None):
    """
    写入一列或多列数据
    :param io: Excel文件
    :param sheet: sheet,int或者str类型
    :param col: 哪一列,如:'A1'
    :param data: 要写入的数据,str、list或者tuple,e.g. [[1, 2], [3, 4], [5, 6]]
    :return:
    """
    wb = xw.Book(io)
    if isinstance(sheet, str):
        sht = wb.sheets(sheet)
    else:
        sht = wb.sheets[sheet]
    sht.range(col).options(transpose=True).value = data
    wb.save()

    # 关闭工作簿和Excel应用程序
    wb.close()
    app.quit()

写入多列时,效果如下:

posted @ 2020-06-28 11:09  cnblogs用户  阅读(9382)  评论(0编辑  收藏  举报