首页 > 其他分享 >xls生成对比

xls生成对比

时间:2024-03-20 23:44:07浏览次数:29  
标签:sheet column xls 生成 cell row border 对比 fill

# -*- coding: utf-8 -*-
import openpyxl,psycopg2
from openpyxl.styles import Font, PatternFill, Border, Side

class xls:
def get_data1(self):
conn = psycopg2.connect(host="192.168.137.129", port="5432", database="postgres", user="postgres",
password="postgresql@123", )
conn.autocommit = True
cur = conn.cursor()
cur.execute("SELECT category,name,setting FROM pg_settings order by 1,2")
lsts = cur.fetchall()
cur.close()
conn.close()
return lsts

def get_data2(self):
conn = psycopg2.connect(host="192.168.137.129", port="1921", database="postgres", user="pg10",
password="postgresql@123", )
conn.autocommit = True
cur = conn.cursor()
cur.execute("SELECT category,name,setting FROM pg_settings order by 1,2")
lsts = cur.fetchall()
cur.close()
conn.close()
return lsts

def execute_xls(self):
wb = openpyxl.Workbook()
sheet = wb.active
sheet.title = '差集1'
wb.create_sheet(title='差集2')
wb.create_sheet(title='交集')
bold_24_Font = Font(size=12, bold=True)
fill = PatternFill(
patternType = "solid",
fgColor = "8CC7B5"
)
side = Side(
style = "thin",
color = "000000"
)
border = Border(
top = side,
bottom = side,
left = side,
right= side,
)

lsts1 = self.get_data1()
lsts2 = self.get_data2()
name_list1 = [i[1] for i in lsts1]
name_list2 = [i[1] for i in lsts2]
set1 = set(name_list1).difference(name_list2)
lsts = [i for i in lsts1 if i[1] in set1]
# 差集1
sheet = wb['差集1']
sheet['A1'] = '分类'
sheet['B1'] = '参数'
sheet['C1'] = '值'
sheet['A1'].font = bold_24_Font
sheet['B1'].font = bold_24_Font
sheet['C1'].font = bold_24_Font
sheet.column_dimensions['A'].width = 80
sheet.column_dimensions['B'].width = 40
sheet.column_dimensions['C'].width = 20
sheet['A1'].fill = fill
sheet['B1'].fill = fill
sheet['C1'].fill = fill
sheet['A1'].border = border
sheet['B1'].border = border
sheet['C1'].border = border
sheet.freeze_panes = 'A2'

for i, key in enumerate(lsts):
sheet.cell(row=i + 2, column=1).value = lsts[i][0]
sheet.cell(row=i + 2, column=2).value = lsts[i][1]
sheet.cell(row=i + 2, column=3).value = lsts[i][2]
sheet.cell(row=i + 2, column=1).border = border
sheet.cell(row=i + 2, column=2).border = border
sheet.cell(row=i + 2, column=3).border = border

# 差集2
sheet = wb['差集2']
sheet['A1'] = '分类'
sheet['B1'] = '参数'
sheet['C1'] = '值'
sheet['A1'].font = bold_24_Font
sheet['B1'].font = bold_24_Font
sheet['C1'].font = bold_24_Font
sheet.column_dimensions['A'].width = 80
sheet.column_dimensions['B'].width = 40
sheet.column_dimensions['C'].width = 20
sheet['A1'].fill = fill
sheet['B1'].fill = fill
sheet['C1'].fill = fill
sheet['A1'].border = border
sheet['B1'].border = border
sheet['C1'].border = border
sheet.freeze_panes = 'A2'
set2 = set(name_list2).difference(name_list1)
lsts = [i for i in lsts2 if i[1] in set2]
for i, key in enumerate(lsts):
sheet.cell(row=i + 2, column=1).value = lsts[i][0]
sheet.cell(row=i + 2, column=2).value = lsts[i][1]
sheet.cell(row=i + 2, column=3).value = lsts[i][2]
sheet.cell(row=i + 2, column=1).border = border
sheet.cell(row=i + 2, column=2).border = border
sheet.cell(row=i + 2, column=3).border = border

# 交集
set3 = set(name_list2).intersection(name_list1)
lsts1 = [i for i in lsts1 if i[1] in set3]
lsts2 = [i for i in lsts2 if i[1] in set3]
sheet = wb['交集']
sheet['A1'] = '分类'
sheet['B1'] = '参数1'
sheet['C1'] = '值1'
sheet['D1'] = '参数2'
sheet['E1'] = '值2'
sheet['A1'].font = bold_24_Font
sheet['B1'].font = bold_24_Font
sheet['C1'].font = bold_24_Font
sheet['D1'].font = bold_24_Font
sheet['E1'].font = bold_24_Font
sheet.column_dimensions['A'].width = 80
sheet.column_dimensions['B'].width = 40
sheet.column_dimensions['C'].width = 20
sheet.column_dimensions['D'].width = 40
sheet.column_dimensions['E'].width = 20
sheet['A1'].fill = fill
sheet['B1'].fill = fill
sheet['C1'].fill = fill
sheet['D1'].fill = fill
sheet['E1'].fill = fill
sheet['A1'].border = border
sheet['B1'].border = border
sheet['C1'].border = border
sheet['D1'].border = border
sheet['E1'].border = border
sheet.freeze_panes = 'A2'
for i, key in enumerate(lsts):
sheet.cell(row=i + 2, column=1).value = lsts1[i][0]
sheet.cell(row=i + 2, column=2).value = lsts1[i][1]
sheet.cell(row=i + 2, column=3).value = lsts1[i][2]
sheet.cell(row=i + 2, column=4).value = lsts2[i][1]
sheet.cell(row=i + 2, column=5).value = lsts2[i][2]
sheet.cell(row=i + 2, column=1).border = border
sheet.cell(row=i + 2, column=2).border = border
sheet.cell(row=i + 2, column=3).border = border
sheet.cell(row=i + 2, column=4).border = border
sheet.cell(row=i + 2, column=5).border = border
wb.save('copy.xlsx')

if __name__ == '__main__':
xls().execute_xls()


标签:sheet,column,xls,生成,cell,row,border,对比,fill
From: https://www.cnblogs.com/jl1771/p/18086398

相关文章

  • R语言神经网络与决策树的银行顾客信用评估模型对比可视化研究
    全文链接:https://tecdat.cn/?p=35403原文出处:拓端数据部落公众号在数字化时代,顾客信用评估成为商业决策中的重要一环。无论是金融机构的信贷审批,还是电商平台的用户信用管理,都需要对顾客的信用状况进行准确评估。随着机器学习技术的不断发展,决策树和神经网络等算法在顾客信用评......
  • 社交小游戏方案大比拼:即构、声网、融云和云信的全面对比
    ​前言:上一篇文章我们主要介绍社交游戏化趋势,并分析了直播平台面临的买量贵、变现难等问题,探讨了小游戏作为新的运营变现玩法的优势。同时还列举了各大直播平台TOP5的小游戏。今天我们继续介绍小游戏系列内容,本文是该系列的第二篇文章-方案选型篇,接下来我们分享小游戏如何做技术......
  • Open Sora 发布!开源的高效复现类 Sora 视频生成方案
         不久前OpenAISora的发布可以说是震惊了世界,但是奈何目前OpenAI还未将Sora开放公测,但在昨天,我们却等来了OpenSora1.0的发布,这是Colossal-AI团队的一个完全开源的视频生成项目,致力于高效制作高质量视频,并使所有人都能使用其模型、工具和内容的计划。通......
  • TimesURL: 用于通用时间序列表征学习的自监督对比学习《TimesURL: Self-supervised Co
    2024年3月18日,最近有点忙,但是这周四周五都要汇报,不想往后推了,早汇报完早结束,硬着头皮先看这一篇,这篇年前就说要看,还保存了书签,但是一直没看,今天趁着中午的时间看一下。(现在14:01,开始看,我的草稿箱里躺着的18篇草稿,Sorry,以后有空再填坑.)论文:TimesURL:Self-supervisedContrasti......
  • Linux下生成核心转储core
    为了方便进行分析调试,希望当程序发生崩溃或者收到SIGSEGV、SIGABRT等信号时,系统会生成相应的核心转储文件。核心转储大小限制首先,要检查核心转储的大小限制。可以使用ulimit命令来查看当前用户的核心转储大小限制:ulimit-c如果输出为0,则表示不生成核心转储文件。可以使......
  • Snowflake 分布式id生成器--生成唯一ID
    在Snowflake算法中,通常包含以下几个部分来构造一个唯一的ID:时间戳(Timestamp):占据了64位ID中的高41位,用来表示生成ID的时间。通过时间戳的递增,保证了生成的ID是递增且唯一的。数据中心ID(DataCenterID):用于标识不同的数据中心,通常占据了5位。机器ID(Worker......
  • Beyond Compare 远程对比代码
    BeyondCompare远程对比代码1、配置FTPBeyondCompare>>工具>>FTP配置配置2、远程比对打开会话,输入本地及远程文件或目录D:\www\erp#本地sftp://[email protected]//var/www/erp#远程IP后两个/对比过程中也可修改远程文件......
  • 【Vue3】组件通信以及各种方式的对比
    方式一:props「父」向「子」组件发送数据父组件:定义需要传递给子组件的数据,并使用v-bind指令将其绑定到子组件的props上。<template><child-component:message="parentMessage"/></template><scriptsetup>importChildComponentfrom'./ChildComponent.......
  • 主流轻量云服务器运营商门槛对比
    以无需备案的香港或东南亚节点来对比1-阿里云月付24元;不过香港的还限量不好买2-腾讯云,香港的服务好几百一个月,就拿首尔节点看吧~30元每月,没有折扣3-百度智能云性价比比较低。。4-火山云无轻量应用服务器5-京东云没内陆以外的节点,东子够意思啊。。......
  • Java根据模板生成excel文件【EasyExcel】【xls、xlsx】
    本文章参考:作者:WaiSaa  原文链接:https://blog.csdn.net/qq_42761569/article/details/1190251711、简介如下图所示,template目录下是准备好的模板,export目录下是生成数据文件。我们这里以第一个模板《theUser蒸汽历史数据.xls》为例进行测试,theUser为占位符,生成的文件中会被替换......