使用xlwings操作excel大全--最新
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 ws
class Excel(object):
def __init__(self,workbook):
self.workbook = workbook
self.filename = None
self.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 # 计数数量自加1
else:
pass
return sheet_list
# 增加sheet
def 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
# 获取sheet
def get_sheet(self,sheetname=None):
if sheetname:
self.sheet = self.workbook.sheets(sheetname)
else:
self.sheet = self.workbook.activate
return self.sheet
# 删除sheet
def 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_name
return self.workbook
class 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 = None
self.my_range = None
self.style = []
# 读取数据
def read(self, range_num):
# 获取单元格值到列表
value = self.sheet.range(range_num).value
return value
# 写入数据
def write(self,range_num,write_range):
self.sheet.range(range_num).value = write_range
return
# 复制
def copy(self, sheet_name, range_col_row):
self.my_range = self.sheet.Range(sheet_name, range_col_row).value
return self.my_range
# 粘贴
def paste(self,sheet_name,range_col_row):
self.sheet.Range(sheet_name,range_col_row).value = self.my_range
return
#粘贴数据
def paste_range(self,sheet_name,range_col_row):
self.sheet.Range(sheet_name, range_col_row).value = self.my_range
return
# 获取行
def col_count(self):
col_value = self.sheet.used_range.last_cell.column
return col_value
# 获取列数
def row_count(self):
row_value = self.sheet.used_range.last_cell.row
return 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_data
pass
# 删除过滤条件
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_height
return row_height
# 设置行高
def set_row_height(self, colnum, rownum, height):
self.sheet.range(colnum, rownum).row_height = height
return
# 获取宽度
def get_col_width(self, colnum):
col_width = self.sheet.range(colnum).column_width
return col_width
# 设置宽度
def set_col_width(self, rownum, colnum, width):
self.sheet.range(rownum, colnum).column_width = width
return
# 获取指定范围的公式
def get_formula(self,range_col_row):
formula = self.sheet.range(range_col_row).formula
return formula
# 设置指定范围的公式
def set_formula(self,range_col_row,formula):
self.sheet.range(range_col_row).formula = formula
return
# 获取指定范围的样式
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, bgcolor
self.sheet.range(range_cell).api.Font.Size = fontsize
self.sheet.range(range_cell).api.Font.ColorIndex = fontcolor
self.sheet.range(range_cell).api.Font.Name = fontname
self.sheet.range(range_cell).color = bgcolor
return
# 获取指定范围的注释
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 = repalcement
break
# data[i][j]=repalcement
else:
pass
return
# 转化成pdf
def to_pdf(self,file):
self.workbook.save(file)
return
# **当前sheet
def activate(self):
self.sheet.activate()
return self.sheet
# 设置指定范围的数值格式
def set_number_format(self,range_num):
self.sheet.range(range_num).api.NumberFormat =self.style
return
def column_num(self, letter):
num = ord('A')
a = 0
sum = 0
for l in letter[::-1]:
sum += (ord(l) - num) * (26 ** a)
a += 1
return 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')
下一篇: MySQL入门教程(七)之视图
推荐阅读
-
使用xlwings操作excel大全--最新
-
使用PHPExcel操作Excel用法实例分析,phpexcel实例分析_PHP教程
-
php中使用PHPExcel操作excel(xls)文件,
-
python中使用xlrd、xlwt操作excel表格详解
-
php中使用PHPExcel操作excel(xls)文件,_PHP教程
-
PhpExcel excel表格操作php类库中文使用方法
-
php中使用PHPExcel操作excel(xls)文件,_PHP教程
-
ASP.NET Core使用EPPlus操作Excel
-
鼠标失灵了使用ALT键盘加速键完全依靠键盘操作Excel2010
-
如何使用POI 操作Excel文档