需求

在数据(excel格式 )导入的时候,需要对数据库中的数据信息与新导入的信息做比对,显示每项信息的差异点。

解决方法

导出数据库中的文件为excel格式,使用 beyondcompare 工具直接比对两个excel文件即可

步骤
beyondcompare 执行命令,比对file1 与file2文件,输出为html文件,输出格式具体设置在 bcscript.txt 中

BCompare.exe "@bcscript.txt" "file1" "file2" "diff.html"

bcscript.txt 文件内容

file-report layout:side-by-side options:display-mismatches output-to:"%3" output-options:wrap-word,html-color "%1" "%2"

比对结果显示

显示优化

使用 BeautifulSoup 解析比对结果,使用jinja2重新渲染显示格式

from bs4 import BeautifulSoup
from jinja2 import FileSystemLoader, Environmentsoup = BeautifulSoup(open('admin.html', encoding='utf-8'), 'html.parser')
tags = ''
diff_num = 0
for i in soup.find_all('tr')[1:]:diff_num += 1sys_stock_info = ''.join([str(x) for x in i.find_all('td')[:6]])import_stcok_info = ''.join([str(x) for x in i.find_all('td')[7:13]])tags += '''<tr> <td colspan="7" ><b>差异点 %d </b></td></tr><tr class="SectionMiddle"><td>系统存货信息</td> %s </tr><tr class="SectionMiddle"><td>本次导入存货</td> %s </tr> ''' % (diff_num, sys_stock_info, import_stcok_info)env = Environment(loader=FileSystemLoader(r'D:\codepath\kunlun_automation_bom\bom_system\utils'))  # 指定模板文件的加载路径
template = env.get_template('temp.html')  # 获取加载路劲下的模板文件
out_html = template.render(tags=tags)  # 渲染
with open('out.html', 'w', encoding='utf-8') as f:f.write(out_html)

temp.html 模板文件,省略css样式设置

****
<table cellspacing="0" cellpadding="0"><tr><td width="90px"></td><td width="90px">料号</td><td width="90px">存货名称</td><td width="90px">生产类别</td><td>规格型号</td><td width="90px">品牌</td><td width="90px">互替品牌</td></tr>{% autoescape off %}{{ tags }}{% endautoescape %}
</table>
****

重新生成的比对信息

基于BCompare数据比对相关推荐

  1. 一种基于三代PacBio测序数据的补洞方法

    一种基于三代PacBio测序数据的补洞方法 技术领域 本发明涉及生物信息技术领域,具体涉及DNA组装的补洞方法,它使用三代PacBio 测序数据来进行基因组数据的补洞. 背景技术 三代PacBio测序 ...

  2. 滴滴基于 Flink 的实时数仓建设实践

    简介:随着滴滴业务的高速发展,业务对于数据时效性的需求越来越高,而伴随着实时技术的不断发展和成熟,滴滴也对实时建设做了大量的尝试和实践.本文主要以顺风车这个业务为引子,从引擎侧.平台侧和业务侧各个不同 ...

  3. python实现实时监控_基于 Python 的交换机实时监控系统的设计与实现

    从高校校园网运维工作实际出发,论文提出了一种基于 Python 语言+SNMP协议的网络交换机监测系统设计思路与实现方法.整个系统系统采用B/S模式,基于轻量级的web开发框架web.py实现.后端采 ...

  4. 37 手游基于 Flink CDC + Hudi 湖仓一体方案实践

    简介: 介绍了 37 手游为何选择 Flink 作为计算引擎,并如何基于 Flink CDC + Hudi 构建新的湖仓一体方案. 本文作者是 37 手游大数据开发徐润柏,介绍了 37 手游为何选择 ...

  5. 基于实战开发垂直搜索引擎_基于DDD的微服务设计和开发实战

    作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...

  6. ddd 访问权限_基于DDD的微服务设计和开发实战

    作者:欧创新.邓頔.文艺 你是否还在为微服务应该拆多小而争论不休?到底如何才能设计出收放自如的微服务?怎样才能保证业务领域模型与代码模型的一致性?或许本文能帮你找到答案. 本文是基于 DDD 的微服务 ...

  7. 矩阵计算的理论与方法_基于微带线的相位补偿方法分析

    摘要 通过引入金丝键合线等效模型,建立微带线旁边增加片式电容并用金丝键合线互连后的相位补偿电路物理模型.提取金丝键合线的并联电容.串联电感.串联电阻等参数,计算片式电容的容值参数,推导相位补偿电路物理 ...

  8. matlab人脸识别开题报告,基于人脸识别的出勤点名系统中特征提取算法研究开题报告...

    基于人脸识别的出勤点名系统中特征提取算法研究 一.本课题研究的目的,意义 人脸识别是一项既有科学研究价值,又有广泛应用前景的研究课题.国际上大量研究人员几十年的研究取得了丰硕的研究成果,自动人脸识别技 ...

  9. 基于STM32的有限词条语音识别与对话模块

    基于STM32的有限词条语音识别与对话模块 一.模块整体设计思路 二.器件选型与方案确定 1.器件选型 (1)语音识别模块 (2)词条存储模块 (3)语音提示模块 (4)主控芯片 2.方案确定 三.I ...

最新文章

  1. 【GLib】GLib学习笔记(一):GLib、GObject、GType
  2. linux apache无法启动,linux mysq 无法启动 apache 无法启动
  3. Java的二十三种设计模式(单例模式、工厂方法模式、抽象工厂模式)
  4. blender视图缩放_如何使用主视图类型缩放Elm视图
  5. 工作378-封装axios方法
  6. (计算机组成原理)第六章总线-第一节:总线概述(概念,分类,系统总线的结构和性能指标)
  7. .net core精彩实例分享 -- LINQ
  8. lex yacc 入门教程(3)正则表达式和lex变量及函数
  9. leetcode不同路径-结题( C++、Python、解析式)
  10. SharePoint2010内容类型剖析(三)
  11. ServerHttpRequest 和 HttpServletRequest 获取 IP 地址 学习笔记
  12. Linux日志终极指南
  13. mysql 中的split函数_mysql中split函数
  14. OrCAD42道问题汇总
  15. 以太网详解(一)-MAC/PHY/MII/RMII/GMII/RGMII基本介绍
  16. 程序员今年最值得关注的 23 种新移动技术
  17. 2020淘宝双十一快速刷金币工具
  18. 伴儿行“四村点面融入,文化牵线搭桥”项目结项
  19. oracle数据库课后习题答案,oracle数据库经典练习题及答案
  20. type-c转type A 3.0线以及otg线序

热门文章

  1. java加载js_[Java教程]javascript如何动态加载js文件
  2. 5月17日上午场初级会计实务真题(二)
  3. 滴滴重磅开源跨平台统一MVVM框架Chameleon
  4. B2B2C多用户商城功能及运营
  5. 喜讯 | 经纬恒润荣获吉利汽车和北汽新能源奖项
  6. 28377D中CPU2操作EMIF1要点
  7. 蓝桥杯 LQ三角形 模拟
  8. Learn Golang
  9. PHP PC端接入支付宝和微信感悟
  10. 求生之路二服务器没有响应,求问“求生之路2”第三方服务器的问题!这里 – 手机爱问...