python3处理xls并flask显示

news2025/4/21 18:37:20

前言:

工作中有需求对xls文件进行生成和显示,这里就将对应的xls文件的处理,读取和flask展示代码罗列出来,方便大家使用:

需要的模块,这里需要注意版本号,如果直接安装使用报错,就指定如下版本安装:

pip install xlrd==1.2.0
pip install xlwt==1.3.0

文件读取:

首先要对xls文件进行读取,读取代码如下:

def ReadExelFile(ProjectName,ScanTime):
    ProjectDir = JarReportDir + ".xls"
    fixexel = []
    nofixexel = []
    rows = 0

    workbook = xlrd.open_workbook(ProjectDir)
    table = workbook.sheets()[0]

    for row in range(0,table.nrows):
        rows = row
        if table.row_values(row)[0] == "":
            rows = rows + 1
            break
        fixexel.append(table.row_values(row))

    for row in range(rows,table.nrows):
        rows = row
        if table.row_values(row)[0] == "No Fix Version:":
            continue
        if table.row_values(row)[0] == "":
            rows = rows + 1
            break
        nofixexel.append(table.row_values(row))

    return fixexel,nofixexel,falseexel,errorexel

Falsk展示:

fask处理代码:

@app.route('/ViewExelReport', methods=['GET'])
def ViewExelReport():
    try:
        cookie = request.cookies.get("cookie")
        user = engine.CheckCookie(cookie)
        if user == "":
            return render_template("login.html")
        ProjectName = request.args.get('name')
        BackArray = engine.GetProjectName()
        ScanTime = request.args.get('time')
        fixexel,nofixexel,falseexel,errorexel = engine.ReadExelFile(ProjectName, ScanTime)
        return render_template("viewexel.html", n_projectname = BackArray, n_getname=ProjectName, n_fixexel=fixexel, n_nofixexel=nofixexel, n_user=user)
    except Exception as e:
        return render_template('error-500.html')

 html代码如下:

                     <div class="col-md-12">
                        <div class="white-box">
                          <h2 class="header-title">待修复版本</h2>
                            <div class="table-responsive">
                              <table class="table table-hover">
                                <thead>
                                  <tr>
                                    <th>Jar名称</th>
                                    <th>Maven版本</th>
                                  </tr>
                                </thead>
                                <tbody>

                                  {% for i in range(1, n_fixexel|length ) %}
                                    <tr>
                                      <td><font color="black">{{ n_fixexel[i][0][:-4] }}</font></td>
                                      <td><font color="DarkOrange">{{ n_fixexel[i][2][10:] }}</font></td>
                                      <td><font color="red">{{ n_fixexel[i][3] }}</font></td>
                                      <td><font color="red">{{ n_fixexel[i][4] }}</font></td>
                                      <td><font color="blue">{{ n_fixexel[i][5] }}</font></td>
                                      <td><font color="blue">{{ n_fixexel[i][6] }}</font></td>
                                      <td>
                                        <a href="{{ n_fixexel[i][7] }}">
                                          <span class="btn btn-pink">
                                            <i class="fa fa-download"></i>
                                            <span>进入下载页面</span>
                                          </span>
                                        </a>
                                      </td>
                                      <td>
                                        <a href="{{ n_fixexel[i][8] }}">
                                          <span class="btn btn-purple">
                                            <i class="fa fa-play"></i>
                                            <span>查看详情</span>
                                          </span>
                                        </a>
                                      </td>

                                    </tr>
                                  {% endfor %}

                                </tbody>
                              </table>
                            </div>

                        </div>
                       </div>

展示如下:

 

文件生成:

 生成代码如下:

    def WriteNewXlsx(self):
        file_name = time.strftime("%Y%m%d", time.localtime())
        jar_xlsx = xlwt.Workbook(encoding="utf-8", style_compression=0)
        sheet1 = jar_xlsx.add_sheet('OutPut', cell_overwrite_ok=True)

        for i in range(0,len(self.Project)):
            sheet1.write(0,i,self.Project[i])

        numrow = 1
        ## 对数据分类 成功
        for i in range(0, len(self.DependencyJarName)):
            if self.SearchState[i] == '0':
                sheet1.write(numrow, 0, self.DependencyJarName[i])
                sheet1.write(numrow, 1, self.VulnerabilityIdJar[i])
                sheet1.write(numrow, 2, self.PackageJar[i])
                sheet1.write(numrow, 3, self.HighestSeverity[i])
                sheet1.write(numrow, 4, self.CVECount[i])
                sheet1.write(numrow, 5, self.NewestId[i])
                sheet1.write(numrow, 6, self.FixVulnerabilityId[i])
                sheet1.write(numrow, 7, self.JarDownloadUrl[i])
                sheet1.write(numrow, 8, self.InforUrl[i])
                sheet1.write(numrow, 9, self.JarFileDir[i])
                sheet1.write(numrow, 10, self.FindJarNum[i])
                numrow = numrow + 1

        jar_xlsx.save( self.xlsxsavedir +'\\'+ file_name +'.xls')
        self._signal.emit( file_name +'.xls' + '保存完成\n')
        QApplication.processEvents()

使用上述代码即可将对应的内容写入对应的xls文件列中

代码很简单,但是其中也遇到了很多坑,这里放出来方便大家的使用,让大家使用中少遇一些坑。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1346387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tensorflow2.X的GPU版框架最快最稳搭建方法

一、环境基础 Windows10以上 已装Anaconda 支持GPU 二、搭建步骤 1. 在Anaconda中创建并进入虚拟环境 conda create -n envname python3.8 conda activate envname 注意&#xff1a;envname 替换为你自己想命名的&#xff0c;下文将以“Ljdenv”出现 2.安…

微服务实战系列之Dubbo(下)

前言 眼看着2023即将走远&#xff0c;心里想着似乎还有啥&#xff0c;需要再跟各位盆友叨叨。这不说曹操&#xff0c;曹操就来了。趁着上一篇Dubbo博文的余温尚在&#xff0c;博主兴匆匆地“赶制”了Dubbo的下集&#xff0c;以飨读者。 上一篇博主依然从Dubbo的内核出发&#…

几代WiFi有什么差异,它们有什么区别

最典型的差异指标&#xff1a;单流传输速率 第一代 基于的标准&#xff1a; 802.11 使用频率&#xff1a;2.4GHz 单流最大传输速率&#xff1a;2Mbit/s 第二代 基于的标准&#xff1a; 802.11b 使用频率&#xff1a;2.4GHz 单流最大传输速率&#xff1a;11Mbit/s 第三代 …

python文件打包实战技巧

众所周知&#xff0c;python是一种脚本语言&#xff0c;python程序必须在python环境下运行&#xff0c;所以如果想把自己写的程序给别人看的话&#xff0c;就比较麻烦&#xff0c;他需要先配置python环境&#xff0c;对于电脑小白来说这是“要命”的事情。而且如果是客户的话&a…

【SD】inpaint 模型 - 换脸术 ☑

文生图-局部重绘 涂抹脸部 关键词添加lora&#xff1a; <lora:Naruto_zilaiye:1.5>, 生成图&#xff1a;

Python 中的运算符介绍(1)

算数运算符 常见的% 、//、/ 用法 赋值运算符 赋值运算&#xff1a;将等号右边赋值给等号左边 常见场景&#xff1a; 比较运算符 代码解析&#xff1a; 逻辑运算符 位运算符&#xff08;了解&#xff09; 三目运算符 身份证运算符 成员运算符

uniApp中uView组件库的丰富单元格方法

目录 基础功能 #自定义内容 #自定义大小 #展示右箭头 #跳转页面 #右侧内容垂直居中 #自定义插槽 当谈到uniapp的uView组件库中的单元格&#xff08;Cell&#xff09;方法时&#xff0c;我们需要了解它的基本功能和用法。 单元格是一种常用的UI元素&#xff0c;在移动应…

每日一题——LeetCode977

方法一 个人方法&#xff1a; 以示例1为例&#xff1a;把[-4,-1,0,3,10] 中n<0的元素拆分出来&#xff0c;把他们的平方从小到大放入arr数组&#xff0c;则arr[0,1,16] ,那数组就还剩[3,10] 对于剩下的元素&#xff0c;看arr里面有没有比他们平方更小的元素先放入res数组&…

WAZUH的安装、设置代理

wazuh安装 wazu的安装分为以下两种方式 官方文档&#xff1a;https://wazuh.com/blog/detecting-common-linux-persistence-techniques-with-wazuh/ 1、自定义安装 这种方式就是一步一步的安装 直接参考官方文档&#xff1a; 这里就不详细介绍了 2、直接下载打包好的虚拟机…

python观察图像的幅度谱和相位谱——冈萨雷斯数字图像处理

原理 在图像处理中&#xff0c;当我们对图像进行傅里叶变换&#xff0c;可以得到两个重要的成分&#xff1a;幅度谱和相位谱。这些成分在图像分析和处理中扮演着关键的角色。 傅里叶变换 傅里叶变换是一种将信号从时域&#xff08;或空间域&#xff09;转换到频率域的工具。对…

Note: Wildlife Protection

wildlife protection protection wildlife Dinosaurs died out because of an unexpected incident. unexpected dinosaurs But wildlife today disappears or is in danger just because humans do harm to it. 但是&#xff0c;今天的野生动植物因为人类的伤害而消失了或…

Hadoop安装笔记1单机/伪分布式配置_Hadoop3.1.3——备赛笔记——2024全国职业院校技能大赛“大数据应用开发”赛项——任务2:离线数据处理

将下发的ds_db01.sql数据库文件放置mysql中 12、编写Scala代码&#xff0c;使用Spark将MySQL的ds_db01库中表user_info的全量数据抽取到Hive的ods库中表user_info。字段名称、类型不变&#xff0c;同时添加静态分区&#xff0c;分区字段为etl_date&#xff0c;类型为String&am…

Autodesk Maya各版本安装指南

链接地址如下&#xff1a; https://pan.baidu.com/s/1Fg7MvUJS0tl5t2XAwMK9xg?pwd0531 1.鼠标右击【Maya2024(64bit)】压缩包&#xff08;win11及以上系统需先点击“显示更多选项”&#xff09;【解压到 Maya2024(64bit)】。 2.打开解压后的文件夹&#xff0c;双击打开【Setu…

【形式语言与自动机/编译原理】CFG->Greibach->NPDA(1)

本文将详细讲解《形式语言与自动机》&#xff08;研究生课程&#xff09;或《编译原理》&#xff08;本科生课程&#xff09;中的上下文无关文法&#xff08;CFG&#xff09;转换成Greibach范式&#xff0c;再转成下推自动机&#xff08;NPDA&#xff09;识别语言是否可以被接受…

SpringValidation自定义注解以及分组校验

SpringValidation的参数校验使用可参考&#xff1a;【SpringMVC应用篇】Spring Validation 参数校验-CSDN博客 目录 1. 引入依赖 2. 自定义注解校验 2.1 创建Validation类 2.2 创建注解对象 2.3 使用注解 3. 分组校验 3.1 实体类内部定义接口 3.2 在参数上指定分组 1. …

这一次,我准备了 20节 PyTorch 中文课程

对于刚接触深度学习的小白来说&#xff0c;PyTorch 是必会的框架。 只是&#xff0c;很多小伙伴还没来得及开启学习之路&#xff0c;一个最重要的问题就摆在了面前&#xff1a; PyTorch&#xff0c;该怎么学呢&#xff1f; 很多同学会自己在网上找资料&#xff0c;不仅耗费时间…

Unity中裁剪空间推导(使用FOV来调节)

文章目录 前言一、使用FOV代替之前使用的Size&#xff08;h&#xff09;1、我们可以把矩阵中使用到 h(高) 和 w(宽) 的部分使用比值替换掉。2、替换后 前言 在之前的文章中&#xff0c;我们控制透视相机使用的是SIze。但是&#xff0c;在透视相机中&#xff0c;我们使用的是FO…

webrtc turn服务器搭建

测试环境ubuntu 22LTS 首先从github上下载源码编译 GitHub - coturn/coturn: coturn TURN server project 用的tag docker/4.6.2-r7 ./configure --prefix /usr/local/coturn make 安装coturn的时候还需要安装一些依赖包 apt-get install pkg-config apt-get install op…

图片处理软件,批量缩放图片尺寸

无论是社交媒体上的分享&#xff0c;还是工作中的图片素材&#xff0c;往往大小不一、形状不同&#xff0c;这时如何批量高效地对这些图片进行缩放就显得尤为重要。传统的图片处理软件&#xff0c;不仅操作复杂&#xff0c;而且处理速度慢&#xff0c;更无法实现批量化处理。但…

BUG-由浏览器缩放引起PC端显示手机端视图

文章目录 来源解决 来源 启动Vue项目&#xff0c;用浏览器打开显示手机端视图&#xff0c;从vscode直接ctrl链接打开正常显示。 检查-未开启仿真&#xff0c;但仍显示错误。 解决 浏览器缩放问题。 修改为100%