import xlwings as xl #引入库可以通过命令行输入pip install xlwings安装
#当前活动程序
app=xl.apps.active
#当前工作簿
wb=app.books.active
#当前工作表
sh=wb.sheets.active
#行列有效行数量和列数量
r,c=sh.range(1,1).expand().shape
#清除批注
sh.range(“A1”).api.ClearComments()#清除批注
#添加批注
sh.range(“a1”).api.AddComment(“系统管理:标注错了”)
#3d_pie_exploded图表创建
chart=sh.charts.add(sh.range(‘b1’).width,sh.range(‘b10’).top,300,200)
chart.set_source_data(sh.range(“a5:b20”))
chart.chart_type=‘3d_pie_exploded’
#chart.api[1].ChartTitle.Text =‘3d_pie_exploded’
#工作簿自定义名称添加,测试后有点小不足,由字符包裹需要手动处理,没想到好的方法
wb.names.add(‘gssum’, sh.name+‘!’+sh.range(“b2:b10”).address)
#去除列表中重复值并汇总
def sumdicarr(brr):
l={}
arr=brr
n=0
while n<len(arr):#去重
l[arr[n][0]]=0
n+=1
for s in l.keys():
for i in range(0,len(arr)):
if s==arr[i][0] and arr[i][(len(arr[0])-1)]:
l[s]+=arr[i][(len(arr[0])-1)]
#字典转列表
l2=[[key,value] for key ,value in l.items()]
return l2
#try使用范例
n=0
try:
app.screen_updating=False
app.display_alerts=False
for i in range(5,r):
if sh.range(‘F’+str(i)).value==‘否’ and str(sh.range(‘H’+str(i)).value).find(‘原创’)!=-1:
sh.range(‘H’+str(i)).value=str(sh.range(‘H’+str(i)).value).replace(“原创”,“”)
sh.range(‘h’+str(i)).color=255,200,200
n+=1
except:
print(‘no’)
finally:
app.screen_updating=True
app.display_alerts=True
print(‘ok,共完成’+str(n)+“个”)
#列表字典使用范例
import xlwings as xl
#活动程序
app=xl.apps.active
#当前工作簿
wb=app.books.active
#当前工作表
sh=wb.sheets.active
nsh=wb.sheets[1]
r=sh.range(‘a’+str(sh.cells.last_cell.row)).end(‘up’).row
arr=sh.range(“C5:K”+str®).value
l={}
l1={}
l2={}
for s in range(0,len(arr)):
l[arr[s][0]]=arr[s][0]
l1[arr[s][1]] = arr[s][1]
l2[arr[s][6]] = arr[s][6]
brr=[];ar=[];br=[]
for s in l.keys():
brr.append(s)
for ss in l1.keys():
ar.append(ss)
for i in l2.keys():
br.append(i)
nsh.range(“A1”).options(transpose=True).value=brr
nsh.range(“b1”).options(transpose=True).value=ar
nsh.range(“c1”).options(transpose=True).value=br
print(‘ok’)
#Excel支付表中操作记录
import xlwings as xl
import time
app=xl.apps.active
wb=app.books[‘123.xls’]
sh=wb.sheets[‘Sheet1’]
rs=sh.range(‘a’+str(sh.cells.last_cell.row)).end(‘up’).row
arr=sh.range(‘A2:AD’+str(rs)).value
find_name=‘key’
n=1
start=time.time()
for i in range(0,len(arr)):
if find_name in arr[i][11]:
print(‘(’+str(n)+‘)’,str(arr[i][5]),‘于’+str(arr[i][27]).split(’ ‘)[0],‘支付’+str(arr[i][28])+‘元’)
n+=1
if n==1:
print(’>>>经检查无支付记录,请扩大时间段搜索’)
else:
print(‘>>>经检查,共有’+str(n-1)+‘条’)
end=time.time()
print(end-start)
app.quit()
app.kill()
#操作列表范例
import xlwings as xl
#当前激活文件
app=xl.apps.active
awb=app.books.active
ash=awb.sheets.active
#获取最大行号
ar=ash.range(‘a’+str(ash.cells.last_cell.row)).end(‘up’).row
#打开的Excel文件但不是当前激活状态
wb=app.books[r’2**项目.xlsx’]
sh=wb.sheets[0]
#rows, columns = ash.used_range.shape #获取最大行数和列数
rs=sh.range(‘a’+str(sh.cells.last_cell.row)).end(‘up’).row
#将当前工作表A3至E最大行写入arr数组
arr=ash.range(“a3:e”+str(ar)).value
#将打状态的文件,A至B列写如brr数组
brr=sh.range(‘A2:B’+str(rs)).value
for i in range(0,len(arr)):
for s in range(0,len(brr)):
if arr[i][4]==brr[s][1]:
arr[i][1]=brr[s][0]
ash.range(“a3”).value=arr
print(‘ok’)
该博客介绍了如何使用Python库xlwings进行Excel操作,包括读取、修改和创建图表,以及处理工作簿和工作表。内容涵盖清除批注、添加批注、创建3D饼状图、去重与汇总数据、更改单元格颜色、处理列表字典以及搜索特定支付记录等操作。
1051

被折叠的 条评论
为什么被折叠?



