Python 实现高效excel 数据处理 常用小功能

最近由于工作中 频繁大量 重复操作excel,为了提高工作效率,解放双手 写了几个python小工具; 本文把相关的核心代码记录下来,供大家参考使用;

---------------------------------------------------------------------------------------------

1.对比两个sheet, 并将不同点高亮显示,可以将不同的数值 覆盖掉。

使用场景,一键参数表誊写 ;

from openpyxl.styles import PatternFill
from openpyxl.styles import colors,Font
import openpyxl as vb

#读取 需要对比的excel表
workbook_a = vb.load_workbook(r'source.xlsm',data_only=False)     
workbook_b = vb.load_workbook(r'target.xlsm',data_only=False)

sheet_a = workbook_a['sheet1']
sheet_b = workbook_b['sheet1']

#遍历所有的行与列
maxrow = sheet_a.max_row
maxcolumn = sheet_b.max_column

#循环对比表格 TPSSetting 的所有单元格数据
for i in range(1,maxrow):
    for j in range(1,maxcolumn):
        cell_a = sheet_a.cell(i,j)
        cell_b = sheet_b.cell(i,j)
        #如果有差异数据,就标识出来(蓝色加粗字体,黄色填充),
        if cell_a.value != cell_b.value:
			
            cell_a.fill = PatternFill("solid",fgColor='FFFF00')
            cell_a.font = Font(color=colors.BLUE,bold=True)
            cell_b.fill = PatternFill("solid",fgColor='FFFF00')
            cell_b.font = Font(color=colors.BLUE,bold=True)
            print(cell_b.value)
            print(cell_a.value)
            cell_b.value=cell_a.value

其中 语句 workbook_a = vb.load_workbook(r'source.xlsm',data_only=False)  红底语句置为false 可用来copy excel背后的公式。置为True 则会只读取 由公式计算出来的数值;

2. 抓取Excel 特定sheet 的特定区域,将表格内容放在列表中, 遍历其中的 所有item,执行自己需要的操作/获取自己需要的内容;
 

import xlwings as xw

###抓取相关内容
workbook=xw.Book('D:\python\test.xlsx')
sheet=workbook.sheets['sheetname']
List01=sheet.range('B1:B80').value
List01=sheet.range('D1:D1000').value
List01=sheet.range('E1:E3000').value


print(List01)
print(List02)
print(List03)

##去除 前后空格,打印目标内容的索引;

for item in List01:
	if type(item)==str and item.strip()=='target_content':
		item_index=List01.index(item)
		print(List01.index(item))

3.将excel表格中的 相关区域复制成照片 贴图到另一个excel 中。使用起来 有时候会报错,大神看出来问题的话 还请留言指点。

def excel_catch_screenTO(file1,file2,screen_area, Phase_area):
	excel = DispatchEx("Excel.Application")  # 启动excel
	excel.Visible = True  # 可视化
	excel.DisplayAlerts = False  # 是否显示警告


	pythoncom.CoInitialize()  # excel多线程相关

	wb_a = excel.Workbooks.Open(file1)  # 打开excel
	ws_a=wb_a.Sheets("Testorder")
	wb_b = excel.Workbooks.Open(file2)  # 打开excel
	ws_b=wb_b.Sheets("Summary")
	
    # """ 对excel的表格区域进行截图——用例:excel_catch_screen(ur"D:\Desktop\123.xlsx", "Sheet1", "A1:J10")"""
	ws_a.Range(screen_area).CopyPicture()  # 复制图片区域
	ws_b.Paste(ws_b.Range(Phase_area))  # 粘贴 ws.Paste(ws.Range('B1'))  # 将图片移动到具体位置 ws.Range('A57')
	wb_a.Close(SaveChanges=0)
	wb_b.Close(SaveChanges=1)  # 关闭工作薄,保存
	# excel.Quit()  # 退出excel
 


excel_catch_screenTO('D:\python\test01.xlsx','D:\python\test02.xlsx', area, 'B75')

目前只是工作中用到的 简单记录了一下,本人非程序员 ,只是像学会使用工具 提高工作效率。

大家有什么 想实现的功能,可以品论留言。一起探索未知新大陆!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值