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()
写入多列时,效果如下: