Python之Excel数据相关

Excel

Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsoft Office的组件发布了5.0版之后,Excel就开始成为所适用操作平台上的电子制表软件的霸主。

它也为早起Microsoft Office三大办公基本应用(Word、Excel、PowerPoint)之一。

Excel分为两种格式:xls(Excel 97-2003)和xlsx(Excel 2007及以上)

CSV(Comma Separated Values)

它是以逗号为分隔符的纯文本文件,而 Excel 文件是 Microsoft Office 软件生成的一种电子表格文件。

下面表格对比两者区别

扩展名格式编辑功能大小兼容性
xlsx(xls)包含复杂的格式,如图表,公式,宏等可以使用 Microsoft Office 软件进行编辑Excel 文件具有丰富的分析和计算功能较大兼容性取决于使用的软件版本
csv只包含简单的文本和数字可以使用任何文本编辑器,如 Notepad 或 Sublime TextCSV 文件仅提供简单的数据存储功能较小具有较高的兼容性

示例

import os
import csv
import codecs
import openpyxl
from openpyxl.descriptors import NoneSet
from openpyxl.styles import (
    Font,
    Color,
    PatternFill
)
from openpyxl.chart import (
    PieChart,
    Reference
)


class DealExport:

    def __init__(self):
        self.export_path = os.path.join(os.getcwd(), "data")

    def exportFileWithCSV(self, file_name, head, content):
        with open(os.path.join(self.export_path, file_name), mode='w', encoding='utf-8', newline='') as file:
            if file.tell() == 0:
                file.write(codecs.BOM_UTF8.decode("utf-8"))
            writer = csv.writer(file)
            writer.writerow(head)
            for row in content:
                writer.writerow(row)

    def exportFileWithXlsx(self, file_name, head, content):
        # 矩阵置换
        matrix = list(zip(*content))
        # 创建一个新的Excel文件
        workbook = openpyxl.Workbook()
        # 选择默认的活动工作表
        sheet = workbook.active
        # 输出工作表名
        ws = workbook.create_sheet('my_sheet', 0)
        totalRows = len(head)
        totalColumn = len(content)
        # for row in range(1, totalRows + 1):
        # ws.insert_rows(totalRows, totalColumn) # 在第一行插入rows列
        for i in range(0, totalRows):
            # 第 1 行 和 第 i+1 列 设置元素
            ws.cell(1, i + 1, head[i])
            self.setStyle(ws, i)
        for i in range(0, totalColumn):
            # 内容
            row = content[i]
            ws.append(row)
            # ws.row_dimensions[i].fill = PatternFill('lightDown', '00FFFF99', '00FFFF99')
            # ws.row_dimensions[i].height = 25
            # 读取数据表格范围
        rowsLen = ws.max_row
        colsLen = ws.max_column
        # for r in range(1, rows + 1):
        # for c in range(1, cols):
        # title = head[r]
        # sheet[r, c] = title[r]
        # # 设置列宽
        # sheet.column_dimensions[r].width = 20

        # # 创建饼状图
        # pie = PieChart()
        # # 说明 第 1 列 第 1行 至 第 headLen 行
        # labels = Reference(ws, 1, 1, totalRows)
        # # 数据
        # data = Reference(ws, totalColumn, 2, totalRows, 2)
        # pie.add_data(data, True)
        # pie.set_categories(labels)
        # pie.title = "测试饼状图"
        #
        # ws.add_chart(pie, "D1")
        # 保存Excel文件
        workbook.save(os.path.join(self.export_path, file_name))

    def setStyle(self, sheet, index):
        # 设置字体样式
        font = Font('Arial', True, True, Color('00000000'))
        sheet['A1'].font = font
        # 设置单元格背景颜色
        # state = NoneSet(values=(['visible', 'hidden', 'veryHidden', 'show']))
        # 首行
        sheet.cell(1, index + 1).fill = PatternFill('solid', '0000FFFF', '0000FFFF')


if __name__ == '__main__':
    deal = DealExport()
    head = ("对象", "名称", "描述", "类型", "第一年数量", "第二年数量", "第三年数量", "第四年数量")
    content = [["TYPE_A", "This must be subclassed", "demo", "add", 1, 2, 3, 4],
               ["TYPE_B", "Defines the interface for stateless encoders/decoders", "demo", "delete", 2, 3, 4, 5],
               ["TYPE_C",
                "Encodes the object input and returns a tuple" + "\n" + "--" * 30 + "\n" + "Decodes the object input and returns a tuple",
                "demo", "update", 3, 4, 5, 6],
               ["TYPE_D", "Creates an IncrementalEncoder instance.", "demo", "add", 4, 5, 6, 7],
               ["TYPE_E",
                "This subclass of IncrementalEncoder can be used as the baseclass for an incremental encoder if the encoder must keep some of the output in a buffer between calls to encode()",
                "demo", "update", 5, 6, 7, 8]]
    deal.exportFileWithCSV("test.csv", head, content)
    deal.exportFileWithXlsx("test.xlsx", head, content)

输出csv文件结果如下,大小为675字节
在这里插入图片描述
输出xlsx文件结果如下,大小为6KB = 6144字节
在这里插入图片描述

参考

  1. 腾讯云_一文看懂用Python读取Excel数据
  2. CSDN_openpyxl包操作Excel文件

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【漏洞复现】Metinfo6.0.0任意文件读取漏洞复现

感谢互联网提供分享知识与智慧,在法治的社会里,请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现代码审计漏洞点 1.5、深度利用EXP编写 1.6、漏洞挖掘1.7修复建议 1.1、漏洞描述 漏洞名称:MetInfo任意文件…

线性代数 第六章 二次型

一、矩阵表示 称为二次型的秩。只含有变量的平方项,所有混合项系数全是零,称为标准形;平方项的系数为1、-1或0,称为规范形。 二次型的标准形不唯一,可以用不用的坐标变换化二次型为标准形;二次型的规范形唯…

nginx配置支持PHP

前言 Nginx是通过php-fpm来通信的,所以需要修改的监听9000端口。 当 Nginx 配置支持 PHP 时,它可以将 PHP 请求转发给 PHP-FPM,由 PHP-FPM 处理请求并返回结果。 要配置 Nginx 支持 PHP,你需要在 Nginx 配置文件中添加一个 locat…

vue3+ts 项目遇到的问题和bug

1.router中使用pinia报错 pinia.mjs:1709 Uncaught Error: [🍍]: "getActivePinia()" was called but there was no active Pinia. Are you trying to use a store before calling "app.use(pinia)"? See https://pinia.vuejs.org/core-concep…

【k8s】pod集群调度

调度约束 Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和 Container。…

不同VLAN间的通信原理

不同VLAN间的通信原理 VLANaccess口trunk口 不同VLAN间通信原理 首先我们来看看什么是VLAN VLAN VLAN(Virtual Local Area Network)虚拟局域网,是将一个物理的局域网在逻辑上划分成多个广播域的技术。VLAN技术部署在数据链路层。 VLAN能够隔…

双十一运动健身好物推荐,这几款健身好物一定不要错过!

双十一购物狂欢节又要到了,又要到买买买的时候了!相信有很多想健身的小白还在发愁不知道买啥装备?别急,三年健身达人这就给你们分享我的年度健身好物! 第一款:南卡Runner Pro4s骨传导耳机 推荐理由&#…

html将复选框变为圆形样例

html将复选框变为圆形样例 说明目录使用对勾图标实现圆形复选框原复选框html代码及默认样式取消复选框未勾选前的样式新增复选框未勾选前的样式新增复选框勾选后的样式获取复选框选中后的value值 使用CSS样式写对勾图标实现圆形复选框 说明 这里记录下用原生html实现将原复选框…

新版Helix QAC 100%覆盖MISRA C++:2023

Helix QAC 2023.3预期将100%覆盖在2023年第四季度发布的新的MISRA C:2023规则。 此外,该版本支持更多的C20语言特性,并改进了Perforce Validate平台和Helix QAC与Validate的集成,以及其他质量改进。 编码标准覆盖率(MISRA C:202…

【C++干货铺】内存管理new和delete

个人主页点击直达:小白不是程序媛 C系列专栏:C干货铺 代码仓库:Gitee 目录 C语言中动态内存管理方式 malloc/calloc/realloc的区别? C内存管理的方式 内置类型 自定义类型 operator new 和 operator delete 函数 operato…

C++ 动态规划。。。

#include <iostream> #include <algorithm> using namespace std; // 定义一个常量&#xff0c;表示无穷大 const int INF 1e9; int dp[1000 2];// 定义一个函数&#xff0c;计算数组中某个区间的和 int sum(int arr[], int start, int end) {int s 0;for (int …

nacos配置中心docker部署、配置及 goLang 集成使用

为什么需要配置中心 平时我们写一个demo的时候&#xff0c;或者说一个单体的应用&#xff0c;都会有一个配置文件&#xff0c;不管是 json文件或者yaml文件&#xff0c;里面包含了redis,mysql,es等信息&#xff0c;如果我们修改了配置文件&#xff0c;往往我们需要重启&#x…

3BHE022291R0101 PCD230A 专注于制造卓越人工智能

3BHE022291R0101 PCD230A 专注于制造卓越人工智能 BISTelligence是BISTel的一个分支&#xff0c;BISTel是为全球半导体和FPD制造商提供工程和软件自动化产品的领先供应商。半导体产品集团上个月被卖给了新思科技。在出售给Synopsys之后&#xff0c;Bisetlliegnce成立了两个部门…

机器学习实战:基于sklearn的工业蒸汽量预测

文章目录 写在前面工业蒸汽量预测1.基础代码2.模型训练3.模型正则化4.模型交叉验证5.模型超参空间及调参6.学习曲线和验证曲线 写在后面 写在前面 本期内容&#xff1a;基于机器学习的工业蒸汽量预测 实验环境&#xff1a; anaconda python sklearn 注&#xff1a;本专栏内所有…

10.(vue3.x+vite)组件间通信方式之props与$emit

前端技术社区总目录(订阅之前请先查看该博客) 示例效果 父组件代码 <template><div><div>{{message }}</div><Child

element树形结构下拉组件组装对应格式数据

element树形结构下拉组件组装对应格式数据 <el-row><el-col :span"24"><el-form-item label"购买渠道" prop"treeData" class"grid-content bg-purple"><el-cascaderv-model"testForm.treeData":optio…

Java web(六):FilterListenerAJAX

文章目录 一、Filter1.1 基本介绍1.2 过滤器的执行流程1.3 拦截路径配置1.4 过滤器链1.5 案例 二、Listener三、AJAX3.1 快速入门3.2 Axios异步框架 四、 JSON4.1 JSON基础语法4.2 Fastjson 五、 案例JSONAxiosServlet Java web的三大组件&#xff1a;Servlet、Filter、Listene…

mac电脑系统清理软件CleanMyMac X2024破解版下载

基本上&#xff0c;不管是win版还是Mac版的电脑&#xff0c;其装机必备就是一款电脑系统清理软件&#xff0c;就比如Mac&#xff0c;目前在市面上&#xff0c;电脑系统清理软件是非常多的。 对于不熟悉系统的用户来说&#xff0c;使用一些小众工具&#xff0c;往往很多用户都不…

SQL 左连接 LEFT JOIN 关键字||SQL右连接 RIGHT JOIN 关键字

SQL 左连接 LEFT JOIN 关键字 SQL左链接LEFT JOIN关键字返回左表&#xff08;表1&#xff09;中的所有行&#xff0c;即使在右表&#xff08;表2&#xff09;中没有匹配。如果在正确的表中没有匹配&#xff0c;结果是NULL。 SQL LEFT JOIN 语法 SELECT column_name(s) …