当前位置: 首页 > news >正文

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_rowcolsLen = 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文件

相关文章:

Python之Excel数据相关

Excel Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。直观的界面、出色的计算功能和图表工具,再加上成功的市场营销,使Excel成为最流行的个人计算机数据处理软件。在1993年,作为Microsof…...

Ubuntu网络IP地址一直显示127.0.0.1

问题描述: 终端输入ip a显示127.0.0.1,原来类似192.168.231.1的地址不见了。 ip a 点击网络配置(ubuntu桌面版),发现无线网络模块看不见了 正常情况应该有wired 模块,就是下面标红的 解决方案&#xff1a…...

Vulnhub-DC-3 靶机复现完整过程

啰嗦两句: 提权之前完成是一个月前做的,当时在提权处出了点问题就搁置了,今天才完成,所以IP地址可能会会有变化 注意:后续出现的IP地址为192.168.200.55同样是靶机IP地址,若本文能有帮助到你的地方&#xf…...

Dubbo篇---第三篇

系列文章目录 文章目录 系列文章目录一、Dubbo 容错策略二、Dubbo 动态代理策略有哪些?三、说说 Dubbo 与 Spring Cloud 的区别?一、Dubbo 容错策略 failover cluster 模式 provider 宕机重试以后,请求会分到其他的 provider 上,默认两次,可以手动设置重试次数,建 议把写…...

Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

java连接上redisjava操作redis的常见类型数据存储redis中的项目应用 1.java连接上redis package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** author zlj* create 2023-11-03 19:27*/ public class Demo1 {public static void main(String[] args) { // …...

react 使用笔记

1.学习:https://reactjs.bootcss.com/learn 2.项目启动报错:Delete ␍ prettier/prettier 解决:https://blog.csdn.net/qq_30272167/article/details/133280165 3.访问地址配置 文件:config-overrides.js devServer: functio…...

Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录

Ubuntu下启动Apache对.htaccess 的支持步骤 1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称,输入: rewrite 2. 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件) 把(默认的www目录、或者需要应用.htacc…...

C++常用格式化输出

在C语言中可以用printf以一定的格式打印字符,C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。  在C中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2…...

QCC TX 音频输入切换+提示声音

QCC TX 音频输入切换提示声音 QCC蓝牙芯片(QCC3040 QCC3056 等等),AUX、I2S、USB输入 蓝牙音频输入,模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 针对TX切换EQ,调节音量不能出提示声音问题,可以增…...

【Java】封装、继承、多态

面向对象的重要特征:封装、继承、多态; 面向对象的语言的语言并不止Java,C也是面向对象的语言; 访问限定符 public:在哪里都可以使用(公开的);private:仅在当前类可以使用…...

第九章 异常处理

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…...

(四) Python Pandas入门

一、介绍 Pandas是Python中一个强大的数据处理库,它提供了许多功能强大的数据结构和数据分析工具。在本文中,我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件。 Pandas提供了大量的数据结构和数据分析工…...

软件测试面试最经典的5个问题

软件测试面试灵魂五问! 请做一下自我介绍?你为什么从上家公司离职?为什么转行做测试? 你对测试行业的认识?你的期望薪资是多少?最后,你要问我什么? 一、请做一下自我介绍 简历上有的可以一两…...

从公共业务提取来看架构演进——功能设置篇

1.引言 上一篇文章我们以帐号权限的提取为例,介绍了当架构跟不上业务发展时及时调整架构的一种思路。这篇文章我们以功能设置为例,进一步讨论公共业务提取这个话题。 功能设置在本文中是指产品开放给企业和用户的一些功能设置项,以视频会议…...

Java基础-015-System.java常用类

Java基础-015-System.java常用类 1、标准输入输出2、获取属性3、System.java初始化4、设置标准输出System.out java/lang/System.java 1、标准输入输出 System.in、System.out public class Test {public static void main(String[] args) {String charsetName String.valueOf…...

Flutter笔记:发布一个模块 scale_design - (移动端)设计师尺寸适配工具

Flutter笔记 发布一个模块scale_design设计师尺寸适配工具与常用组件库 作者:李俊才 (jcLee95):https://blog.csdn.net/qq_28550263 邮箱 :291148484163.com 本文地址:https://blog.csdn.net/qq_28550263/a…...

torch增加维度操作

使用none作为占位符 在Python中,None 表示空值或占位符。 在masked_pos[:, :, None]这个切片操作中,None 被用作一个占位符,以改变张量的维度。这通常用于将一维张量变为二维张量,或者改变张量的形状。 具体来说,ma…...

软件测试面试题及答案2024

1、你们的缺陷等级如何划分的?☆☆☆☆☆ 我们的缺陷一般分为四个等级,致命级,严重级,一般级和轻微级。致命级指能够导致软件程序无法使用的缺陷,比如宕机,崩溃,手机APP的闪退,数据…...

C现代方法(第18章)笔记——声明

文章目录 第18章 声明18.1 声明的语法18.2 存储类型18.2.1 变量的性质18.2.2 auto存储类型18.2.3 static存储类型18.2.4 extern存储类型18.2.5 register存储类型18.2.6 函数的存储类型18.2.7 小结 18.3 类型限定符18.4 声明符18.4.1 解释复杂声明18.4.2 使用类型定义来简化声明…...

Spring Data Redis + RabbitMQ - 基于 string + hash 实现缓存,计数(高内聚)

目录 一、Spring Data Redis 1.1、缓存功能(分析) 1.2、案例实现 一、Spring Data Redis 1.1、缓存功能(分析) hash 类型存储缓存相比于 string 类型就有更多的更合适的使用场景. 例如,我有以下这样一个 UserInfo 信息 假设这样一个场景就是:万一只想获取其中某一个…...

[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?

🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里&#xf…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【位运算】消失的两个数字(hard)

消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站:https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本: Windows版(推荐下载标准版) Windows系统安装步骤 运行安装程序: 双击下载的.exe安装文件 如果出现安全提示&…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

MySQL JOIN 表过多的优化思路

当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接:【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

Java 与 MySQL 性能优化:MySQL 慢 SQL 诊断与分析方法详解

文章目录 一、开启慢查询日志,定位耗时SQL1.1 查看慢查询日志是否开启1.2 临时开启慢查询日志1.3 永久开启慢查询日志1.4 分析慢查询日志 二、使用EXPLAIN分析SQL执行计划2.1 EXPLAIN的基本使用2.2 EXPLAIN分析案例2.3 根据EXPLAIN结果优化SQL 三、使用SHOW PROFILE…...

【多线程初阶】单例模式 指令重排序问题

文章目录 1.单例模式1)饿汉模式2)懒汉模式①.单线程版本②.多线程版本 2.分析单例模式里的线程安全问题1)饿汉模式2)懒汉模式懒汉模式是如何出现线程安全问题的 3.解决问题进一步优化加锁导致的执行效率优化预防内存可见性问题 4.解决指令重排序问题 1.单例模式 单例模式确保某…...