使用xlwings操作excel大全--最新

news/2024/10/22 10:36:02/

xlwings 操作excel

def open(filename=None,visible=False, readonly=False,
password=None,write_password=None):
#filename 文件路径,打开,没有文件名则创建
#visible 打开是否可见
#readonly 是否打开只读
#password 文件读取密码
#write_password 设置文件密码 该方法会启动一个打开excel的进程并打开文档,通过visible来控制这个Excel进程是否可见。返回一个Excel对象。
workbook = open(r"C:\Users\MI\Desktop\工作簿1.xlsx")

def create(title,visible=False):
#创建 title 添加sheet名
#该方法会启动一个打开excel的进程并打开文档,通过visible来控制这个Excel进程是否可 见。返回一个Excel对象。 workbook = create(‘sheet1’)

Excel模块

def save(self, path): # 保存
#path是文件保存路径,如果不上传, 保存至当前文件
workbook .save()

def close(self,save=True):
关闭+默认保存当前
workbook .close()

def sheets(self):
#获取当前excel中所有sheets列表-返回所有sheet的名字 print(workbook .sheets())

def add_sheet(self,sheet_name, location, *, relative=“before”):
#增加sheet,sheet_name 是指新增sheet的名字
#location,指定插入位置的sheet的名称
#relative,插在location的名称的sheet前或后,before/after 在location的sheet前或后插入新的sheet,新增sheet并返回该对象 sheet =
workbook.add_sheet(“sheetxxx”,“sheet4”)

def get_sheet(self,sheetname=None):
#获取当前sheet sheet_name传参则找到对应的名字的sheet,如果不传参,默认当前sheet sheet = workbook.get_sheet()

def remove_sheet(self,sheetname):
#删除sheet
sheet_name传参则删除对应的名字的sheet,如果不传参,默认删除当前sheet
workbook.remove_sheet()

def rename_sheet(self, old_sheet_name, new_sheet_name):
#sheet重命名 old_sheet_name是重命名前的sheet名字 new_sheet_name重命名后的sheet名字
workbook.rename_sheet(‘sheet1’,‘AAA’)

Sheet模块

def read(self,range_num):
#读取数据 # 获取单元格值到列表,range_num是指读取的范围
#读取范围 sheet.read(‘A1:D5’)
#读取单元格 sheet.read(‘D5’)

def write(self,range_num,write_range):
#写入数据 range_num 指的是写入的范围 write_range 指的是写入数据
#单元格写入数据
sheet.write(‘A1’,‘hello world’)
#范围写入数据
sheet.write(‘A1:B2’,[[‘READ’,‘WRITE’],[‘HELLO’,‘WORLD’]])

def copy(self, sheet_name, range_col_row): # 复制 sheet_name
是指复制的sheet名字 range_col_row 复制的范围
#复制单元格 sheet.copy(‘sheet1’,‘A1’)
#复制范围 sheet.copy(‘sheet1’,‘A1:D3’)

def paste(self,sheet_name,range_col_row):
#粘贴 sheet_name 是指的粘贴的sheet名字 range_col_row 粘贴的范围
#粘贴到单元格 sheet.paste(‘sheet1’,‘D2’)
粘贴到范围 sheet.paste(‘sheet1’,‘A2:D2’)

def col_count(self):
#获取当前sheet的总行数
print(sheet.col_count())

def row_count(self): # 获取当前sheet的总列数 print(sheet.row_count())

def sort(self, cell_pos):
#排序
#cell_pos 需要排序的单元格当前列
sheet.sort(‘B1’)

def merge_cell(self,range_num):
#合并单元格
range_num 指合并单元格的范围
#合并单元格
sheet.merge_cell(‘A1:A4’)

def insert_rows(self,range_num):
#插入行
#range_num 插入行的位置
#在D前插入一列
sheet.insert(‘D’)
#在第四行前插入一行
sheet.insert(4)

def insert_columns(self,range_num):
#插入列
#range_num 插入的位置,默认在当前位置前插入
sheet.insert_rows(‘A’)

def delete(self,range_cell,insertDirection=None):
#删除 range_cell 删除范围
insertDirection=None
#删除A1单元格
sheet.delete(‘A1’)
#删除范围
sheet.delete(‘A1:D3’)

def remove_duplicate(self,rows, columns):
#删除重复 rows, columns

def add_picture(self, file):
#添加图片 file 添加图片所在路径
#添加图片
sheet.add_picture(r’C:\Users\MI\Desktop\报名信息.png’)

def get_row_height(self,rows):
获取行高 返回查询单元格的rows 当前行高
#获取指定单元格的行高
print(sheet.get_row_height(‘A1’))

def set_row_height(self, colnum, rownum, height):

#设置行高 colnum 列 rownum 行 height 设置的高度
#设置第一行第一列高度为10
sheet.set_row_height(1,1,10)

def get_col_width(self, colnum):
#获取宽度 colnum 列 获取列宽
#获取C1单元格的宽度
print(sheet.get_col_width(‘C1’))

def set_col_width(self, rownum, colnum, width):

#设置宽度 colnum 列 rownum 行 width设置的宽度
#将第二行第二列设置列宽为100
sheet.set_col_width(2,2,100)

def get_formula(self,range_col_row):
#获取指定范围的公式 range_col_row 指定单元格
#获取指定单元格的公式
print(sheet.get_formula(‘C3’))

def set_formula(self,range_col_row,formula):

#设置指定范围的公式 range_col_row 指定单元格 formula
设置公式 比如在A1单元格设置A7单元格数据加上C7单元格数据
sheet.set_formula(‘A1’, ‘=sum(a7+c7)’)

def get_style(self,range_cell):

#获取指定范围的样式 range_cell 指定范围

def set_style(self,range_cell,fontsize,fontcolor,fontname,bgcolor):

#设置指定范围的样式 range_cell 指定范围/单元格 fontsize 字体大小 fontcolor 字体颜色 fontname 字体 bgcolor 背景颜色 设置单元格的字体大小,字体颜色,字体样式和背景颜色 sheet.set_style(‘A1’, 20)
sheet.set_style(‘b1’,22,10)
sheet.set_style(‘b1’,22,10,‘微软雅黑’,‘255,200,255’)

def get_comment(self,text,author):
#获取指定范围的注释
sheet.get_comment('A1','a')
    def set_comment(self,cell,text,author):# 往指定范围插入注释
cell 指定单元格
text 注释内容
sheet.set_comment('A1','1','AAAA')
def replace_data(self,text,repalcement, match_case=False):

#替换指定内容 text 获取内容 repalcement 替换内容 match_case=False
将表格中的text换为repalcement
sheet.replace_data(5,777777)

    def to_pdf(self,file):# 转化成pdf
file 转成pdf保存的路径
sheet.add_picture('1.jpg')
def activate(self):  # 激活当sheet sheet.activate()
def set_number_format(self,rane_num):

#设置指定范围的数值格式 range_num

代码块

# !/user/bin/python3
# -*- coding:utf-8 -*-
import xlwings as xw
import os
from openpyxl import Workbook
from openpyxl.comments import Comment
import xlrd,xlwt,openpyxl
import re# 打开,没有文件名则创建
def open(filename=None,visible=False, readonly=False, password=None, write_password=None):app = xw.App(visible=True, add_book=False)if filename:workbook = app.books.open(filename)else:workbook = app.books.add()return workbook# 创建
def create(title,visible=False):app = xw.App(visible=True, add_book=False)workbook = app.books.add(title)return workbook#
# def catch(filename):
#     wb = openpyxl.load_workbook(filename)
#     ws = wb.active(filename)
#     return wsclass Excel(object):def __init__(self,workbook):self.workbook = workbookself.filename = Noneself.sheet = None# 保存def save(self, path):if path:self.workbook.save(path)else:self.workbook.save()return# 关闭+默认保存当前def close(self,save=True):self.workbook.close(save=True)return# sheets列表def sheets(self):sheet_list =[]num = len(self.workbook.sheets)for i in range(num):if i >= 0:sht = self.workbook.sheets[i]sheet_list.append(sht.name)i += 1  # 计数数量自加1else:passreturn sheet_list# 增加sheetdef add_sheet(self,sheet_name,location, *, relative="before"):if sheet_name:self.workbook.sheets.add(sheet_name,location=None,relative="before")else:self.workbook.sheets.add()return# 获取sheetdef get_sheet(self,sheetname=None):if sheetname:self.sheet = self.workbook.sheets(sheetname)else:self.sheet = self.workbook.activatereturn self.sheet# 删除sheetdef remove_sheet(self,sheetname):self.workbook = self.workbook.sheets[sheetname].delete()self.workbook.save()return self.workbook# sheet重命名def rename_sheet(self, old_sheet_name, new_sheet_name):self.workbook.sheets[old_sheet_name].name =new_sheet_namereturn self.workbookclass Sheet:def __init__(self):self.workbook = open(r"C:\Users\MI\Desktop\工作簿1.xlsx")self.sheet = self.workbook.sheets[0]# print(self.sheet)self.cell = Noneself.my_range = Noneself.style = []# 读取数据def read(self, range_num):# 获取单元格值到列表value = self.sheet.range(range_num).valuereturn value# 写入数据def write(self,range_num,write_range):self.sheet.range(range_num).value = write_rangereturn# 复制def copy(self, sheet_name, range_col_row):self.my_range = self.sheet.Range(sheet_name, range_col_row).valuereturn self.my_range# 粘贴def paste(self,sheet_name,range_col_row):self.sheet.Range(sheet_name,range_col_row).value = self.my_rangereturn#粘贴数据def paste_range(self,sheet_name,range_col_row):self.sheet.Range(sheet_name, range_col_row).value = self.my_rangereturn# 获取行def col_count(self):col_value = self.sheet.used_range.last_cell.columnreturn col_value# 获取列数def row_count(self):row_value = self.sheet.used_range.last_cell.rowreturn row_value# 排序def sort(self, cell_pos):self.sheet.range(cell_pos).api.Sort(Key1=self.sheet.range(cell_pos).api, Order1=1)# print(self.sheet.name)# data = self.sheet.range(cell_pos).value# print(data)# key = data.sort()# print(key)# for i in key:#     self.sheet.range(cell_pos).value = i# self.sheet.range(cell_pos).api.Sort(key=key,Order=2)# data = self.sheet.range(cell_pos).value# print(data)# print(data)return# 过滤条件def filter(self,col,data):# filter_data = self.sheet.range.filter(col,data)# filter_data = xw.apps.keys()# print(filter_data)# return filter_datapass# 删除过滤条件def remove_filter(self):pass# 对多列进行筛选def multi_filter(self):pass# 宏def run_macro(self,name):# self.workbook.sheets[0].range('A1').value = 'Hello World!'self.workbook.macro(name=name)return# 合并单元格def merge_cell(self,range_num):self.sheet = self.sheet.range(range_num).api.merge()return self.sheet# 插入行def insert_rows(self,range_num):self.sheet = self.sheet.api.Rows(range_num).Insert()return self.sheet# 插入列def insert_columns(self,range_num):self.sheet=self.sheet.api.Columns(range_num).Insert()return self.sheet# 删除def delete(self,range_cell,insertDirection=None):self.sheet = self.sheet.range(range_cell).delete()return self.sheet# 删除重复def remove_duplicate(self,rows, columns):self.sheet = self.sheet.range(rows, columns).api.RemoveDuplicates()return self.sheet# 添加图片def add_picture(self, file):# self.sheet.Range(col, row).append(file)self.sheet.pictures.add(os.path.join(os.getcwd(), file))return# 获取行高def get_row_height(self,rows):row_height = self.sheet.range(rows).row_heightreturn row_height# 设置行高def set_row_height(self, colnum, rownum, height):self.sheet.range(colnum, rownum).row_height = heightreturn# 获取宽度def get_col_width(self, colnum):col_width = self.sheet.range(colnum).column_widthreturn col_width# 设置宽度def set_col_width(self, rownum, colnum, width):self.sheet.range(rownum, colnum).column_width = widthreturn# 获取指定范围的公式def get_formula(self,range_col_row):formula = self.sheet.range(range_col_row).formulareturn formula# 设置指定范围的公式def set_formula(self,range_col_row,formula):self.sheet.range(range_col_row).formula = formulareturn# 获取指定范围的样式def get_style(self,range_cell):self.style.append(self.sheet.range(range_cell).api.Font.Size)self.style.append(self.sheet.range(range_cell).api.Font.ColorIndex)self.style.append(self.sheet.range(range_cell).api.Font.Name)self.style.append(self.sheet.range(range_cell).color)return self.style# 设置指定范围的样式def set_style(self,range_cell,fontsize,fontcolor,fontname,bgcolor):# fontsize, fontcolor, fontname, bgcolorself.sheet.range(range_cell).api.Font.Size = fontsizeself.sheet.range(range_cell).api.Font.ColorIndex = fontcolorself.sheet.range(range_cell).api.Font.Name = fontnameself.sheet.range(range_cell).color = bgcolorreturn# 获取指定范围的注释def get_comment(self,text,author):# data = self.sheet.range(cell)# data = self.sheet.range(cell).comment()data = Comment(text=text,author=author)return data# 往指定范围插入注释def set_comment(self,cell,text,author):self.sheet[cell].comment = Comment(text=text,author=author)return# 替换指定内容def replace_data(self,text,repalcement, match_case=False):data = self.sheet.range('A1').expand().value# print(data)for i in range(len(data)):for j in range(len(data[i])):# print(data[i][j)if text == data[i][j]:self.sheet.range(i, j).value = repalcementbreak# data[i][j]=repalcementelse:passreturn# 转化成pdfdef to_pdf(self,file):self.workbook.save(file)return# 激活当前sheetdef activate(self):self.sheet.activate()return self.sheet# 设置指定范围的数值格式def set_number_format(self,range_num):self.sheet.range(range_num).api.NumberFormat =self.stylereturndef column_num(self, letter):num = ord('A')a = 0sum = 0for l in letter[::-1]:sum += (ord(l) - num) * (26 ** a)a += 1return sum - 1# a = open(r"C:\Users\MI\Desktop\工作簿1.xlsx")
# b = Excel(a)
# # b.add_sheet(sheet_name='Shee1') # 增加sheet
# print(b.sheets())
# # print(b.get_sheet())
# # print(b.remove_sheet('Sheet3'))
# print(b.rename_sheet('Sheet3','sheeeet'))
# sheet = b.get_sheet()
f = Sheet()
# f.read('A1')
# print(f.clo(5))
# print(f.col_count())
# print(f.row_count())
# print(f.read('A1:B4'))
# f.write('A1',666)
# f.write('A1:A2',[123,321])
# f.sort('B1')
# f.merge_cell('A1:A4')
# f.insert('D')
# f.insert(4)
# f.insert_rows('A')
# f.add_picture(r'C:\Users\MI\Desktop\报名信息.png','C',6)
# print(f.get_row_height('A1'))
# print(f.get_col_width('C1'))
# print(f.get_formula('C3'))
# f.set_formula('A1', '=sum(a7+c7)')
# f.set_col_width(2,2,100)
# f.set_row_height(1,1,0)
# f.set_style('A1', 20)
# f.set_style('b1',22,10)
# f.set_style('b1',22,10,'微软雅黑','255,200,255')
# f.remove_duplicate(1,'A')
# print(f.get_style('A1'))
# f.add_picture('1.jpg')
# f.to_pdf(r'C:\Users\MI\Desktop\6.pdf')
# print(f.get_comment('A1','a'))
# print(f.set_comment('A1','1','AAAA'))
# f.replace_data(5,777777)
# f.delete('F3')

http://www.ppmy.cn/news/567233.html

相关文章

easyexcel 2.2.6 新版本以列表的形式读取 Excel

使用步骤&#xff1a; 注&#xff1a;讲述使用 EasyExcel 的读取 Excel 数据列表的案例&#xff0c;项目基于 springboot maven 模式。 1、引入 EasyExcel 依赖包&#xff0c;文章以 easyexcel 2.2.6 为基础。 <dependency><groupId>com.alibaba</groupId>&…

Spire.XLS:一款Excel处理神器

正文 前言&#xff1a;最近项目里面有一些对Excel操作的需求&#xff0c;博主想都没想&#xff0c;NPOI呗&#xff0c;简单、开源、免费&#xff0c;大家都喜欢&#xff01;确实&#xff0c;对于一些简单的Excel导入、导出、合并单元格等&#xff0c;它都没啥太大的问题&#…

报表控件Stimulsoft v2023.1全新发布 | 附免费下载试用

Stimulsoft Ultimate 宣布发布新版本2023.1&#xff01;在最新版本中添加了对Razor Pages的支持、新的数据监视器可视化工具、为PHP和Blazor平台更新了组件,欢迎下载试用&#xff01; Stimulsoft Ultimate官方正版下载 Razor Pages 在 2023.1.1 版中&#xff0c;我们添加了对…

编辑 用Excel制作股票交易表格/日志,带macro宏程序(vba)更新V1.5

写在前面 交易股票最好要记录每一笔交易&#xff0c;交易记录能帮助我们回忆和分析交易中的成功失败&#xff0c;以获得交易技能的提升&#xff0c;甚至可以使我们头脑更加清晰&#xff0c;不至于做出错误判断和冲动交易。 于是本着每一笔交易都详细记录的投资者&#xff0c;…

Excel神器之xlwings的安装

使用强大的xlwings插件可以大大提高你的Excel使用效率。 但是在安装过程中会遇到各种各样的踩坑问题&#xff0c;下面是xlwings的安装过程 第一步 确定你的python版本 例如我这里是python3.9.1&#xff0c;我们可以通过 windowR 输入 cmd 通过命令查看 python --version 第二…

(一)python实战——使用Pyinstaller打包一个python的exe可执行文件

前言 在python编程中&#xff0c;我们往往需要将我们的应用程序打包成一个可执行文件&#xff0c;方便使用。如果是单独的python文件&#xff0c;其他人使用前必须要先安装python环境&#xff0c;在python环境中通过命令执行我们的python程序。本节内容我们主要介绍一下使用Py…

Windows电脑怎么通过ssh访问GitHub

Windows系统访问GitHub可以通过使用Git Bash&#xff0c;它是Git版本控制软件的命令行版&#xff0c;包含了SSH客户端。你可以按照下面的步骤来配置和使用&#xff1a; 如果你还没有安装Git Bash&#xff0c;你可以去Git的官方网站(https://git-scm.com/)下载并安装。在安装过程…

html下播放.wav,wav格式文件用什么播放

WAV文件作为最经典的Windows多媒体音频格式&#xff0c;应用非常广泛&#xff0c;使用三个参数来表示声音&#xff1a;采样位数、采样频率和声道数&#xff1b;Windows Media Player和Winamp都可以播放。 本文环境&#xff1a;windows10系统、thinkpad t480电脑。 WAV文件作为最…