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

如何通过Python将各种数据写入到Excel工作表

在数据处理和报告生成等工作中,Excel表格是一种常见且广泛使用的工具。然而,手动将大量数据输入到Excel表格中既费时又容易出错。为了提高效率并减少错误,使用Python编程语言来自动化数据写入Excel表格是一个明智的选择。Python作为一种简单易学且功能强大的编程语言,其丰富的模块能够处理各种任务,包括操作Excel文件。通过编写Python代码,您可以轻松地将数据写入Excel表格,无论是小规模的数据集还是大规模的数据处理,使用Python自动化数据写入过程都可以大大提高工作效率,减少人为错误的发生。

本文中将介绍如何使用Python写入数据到Excel表格,提供更高效和准确的Excel表格数据写入方案,从而简化数据处理流程并节省宝贵的时间和精力。本文主要包含以下几个方面:

文章目录

    • Excel数据写入相关介绍
    • 通过Python写入文本或数字数据到Excel单元格
    • 通过Python写入数组到Excel工作表
    • 通过Python写入CSV数据到Excel工作表
    • 通过Python写入XML数据到Excel工作表

本文所使用的方法需要用到Spire.XLS for Python,可从官网下载或通过PyPI安装:pip install Spire.XLS

Excel数据写入相关介绍

  • 本文所使用的API中,使用Workbook类来代表一个Excel工作簿。在操作Excel工作簿时,可以使用该类下的 LoadFromFile() 方法从文件读取Excel工作簿进行操作或直接通过创建Workbook的对象从而创建工作簿进行操作。需要注意的是,新建的Excel工作簿默认有三个工作表。
  • 同时,该API还提供Worksheet类和一系列方法、属性来对工作表及其中的单元格数据、格式等内容进行操作。
  • 表格数据的主要来源有CSV文件、文本数组XML文件等。当我们需要制作报告等方便查看和分析的表格时,通过程序将这些类型的表格数据写入到Excel表格中可以实现高效精确的表格生成。
  • Worksheet.Range[str] 属性用于获取指定单元格或指定单元格范围。其中,单元格和单元格范围的表示方法与Excel相同,即“字母+数字”表示单元格,“字母+数字:字母+数字”表示单元格范围,如“A1”和“A1:C3”。
  • Workbook.SaveToFile(str, FileFormat) 方法用于保存Excel工作簿到文件,可将 FileFormat 枚举类型作为参数设置保存的文件格式。

通过Python写入文本或数字数据到Excel单元格

使用Workbook类直接创建Excel工作簿或载入工作簿之后,可以使用该类下的方法设置格式及写入数据。以下是写入文本或数值到Excel单元格操作示例:

  • 导入所需模块。
  • 创建 Workbook 类的对象以创建Excel工作簿。
  • 使用 Workbook.Worksheets.Clear() 方法删除默认的工作表,并使用 Workbook.Worksheets.Add() 方法新建一个工作表。
  • 通过 Worksheet 类下的属性设置单元格格式。
  • 通过 Worksheet.Range[].Text 属性添加文本或数值到指定单元格。
  • 使用 Workbook.SaveToFile() 方法保存工作簿到文件并关闭工作簿。

代码示例:

from spire.xls import Workbook
from spire.xls import Worksheet
from spire.xls import FileFormat# 创建Excel工作簿
workbook = Workbook()# 删除工作表并创建新的工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("成员信息")# 设置单元格格式
worksheet.Range["A1:D1"].Style.Font.IsBold = True
worksheet.Rows[0].RowHeight = 30
worksheet.Range["A1:D1"].Style.Font.Size = 12
worksheet.Range["A2:D4"].Style.Font.Size = 11# 写入表头数据
worksheet.Range["A1"].Text = "序号"
worksheet.Range["B1"].Text = "姓名"
worksheet.Range["C1"].Text = "年龄"
worksheet.Range["D1"].Text = "职业"# 写入其他数据
worksheet.Range["A2"].Text = "1"
worksheet.Range["A3"].Text = "2"
worksheet.Range["A4"].Text = "3"worksheet.Range["B2"].Text = "约翰"
worksheet.Range["B3"].Text = "乔伊"
worksheet.Range["B4"].Text = "迈克"worksheet.Range["C2"].Text = "35"
worksheet.Range["C3"].Text = "28"
worksheet.Range["C4"].Text = "42"worksheet.Range["D2"].Text = "工程师"
worksheet.Range["D3"].Text = "律师"
worksheet.Range["D4"].Text = "医生"# 保存工作簿
workbook.SaveToFile("output/写入数据到单元格.xlsx", FileFormat.Version2016)
workbook.Dispose()

输出的Excel工作簿:
写入文本到Excel工作表

通过Python写入数组到Excel工作表

使用 Worksheet.InsertArray(arrObject: List[], firstRow: int, firstColumn: int, isVertical: bool) 方法可以插入数组到Excel工作表中,同时可设置插入的位置及方式。以下是操作步骤介绍:

  1. 导入所需模块。
  2. 创建 Workbook 对象以创建 Excel 工作簿。
  3. 使用 Workbook.Worksheets.Clear() 方法清除默认的工作表,并使用 Workbook.Worksheets.Add() 方法新建一个名为 “销售数据” 的工作表。
  4. 使用 Worksheet 类下的属性设置单元格格式。
  5. 创建一个二维数组 tableArray,其中包含要插入到工作表的数据。
  6. 遍历二位数组的每一个列表,使用 Worksheet.InsertArray() 方法将列表中的数据插入到工作表的指定单元格中。
  7. 使用 Workbook.SaveToFile() 方法将工作簿保存到指定的文件中并关闭工作簿。

代码示例:

from spire.xls import Workbook
from spire.xls import FileFormat# 创建Excel工作簿
workbook = Workbook()# 清除默认工作表并新建工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("销售数据")# 设置单元格格式
worksheet.Range["A1:D1"].Style.Font.IsBold = True
worksheet.Rows[0].RowHeight = 30
worksheet.Range["A1:D1"].Style.Font.Size = 12
worksheet.Range["A2:D4"].Style.Font.Size = 11# 数组
tableArray = [["日期", "产品", "销售额"],["20220101", "产品A", "1000"],["20220101", "产品B", "1500"],["20220102", "产品A", "1200"],["20220102", "产品B", "1800"],["20220103", "产品A", "900"],["20220103", "产品B", "1600"]
]# 将数据逐行插入工作表
i = 1
for array in tableArray:worksheet.InsertArray(array, i, 1, False)i += 1# 保存工作簿
workbook.SaveToFile("output/写入数组到工作表.xlsx", FileFormat.Version2016)
workbook.Dispose()

输出的Excel工作簿:
写入数组到Excel工作表

通过Python写入CSV数据到Excel工作表

在将CSV数据写入Excel表格时,我们可以直接使用 Workbook.LoadFromFile() 方法载入CSV文件并保存为XLSX格式,从而将CSV文件直接转换为Excel工作簿。再载入CSV文件时,可通过分隔符作为参数来载入不同分隔符的CSV表格。以下是操作示例:

  1. 导入所需模块。
  2. 创建Workbook类的对象。
  3. 使用 Workbook.LoadFromFile() 方法载入CSV文件。
  4. 使用 Workbook.SaveToFile() 方法将CSV文件保存为Excel工作簿。

代码示例:

from spire.xls import Workbook
from spire.xls import FileFormat# 创建Workbook类的对象
workbook = Workbook()# 载入CSV文件
workbook.LoadFromFile("销量统计.csv", ",")# 保存为Excel工作簿
workbook.SaveToFile("output/写入CSV数据到工作表.xlsx", FileFormat.Version2016)
workbook.Dispose()

保存结果:
CSV保存为Excel

通过Python写入XML数据到Excel工作表

写入XML数据到Excel工作表需要读取XML数据,然后先将表头写入工作表,然后再写入对应数据到单元格中。需要根据XML表格数据的结构调整代码进行写入。
下面是操作步骤介绍:

  1. 导入模块。
  2. 创建一个Workbook类的对象。
  3. 清除默认工作表并使用 Workbook.Worksheets.Add(str Name) 方法添加一个工作表。
  4. 设置工作表的单元格格式。
  5. 加载XML数据,使用xml.etree.ElementTree模块的parse方法解析XML文件,获取根元素和子元素。
  6. 获取第一个student节点来确定列数和表头。
  7. 写入表头,通过迭代表头节点并将其作为列标题写入工作表。
  8. 写入数据,通过迭代每个学生节点和对应的数据节点,使用 Worksheet.SetValue(int rowIndex, int columnIndex, str Valuw) 将数据值写入工作表。
  9. 使用SaveToFile方法将工作簿保存为指定路径的Excel文件并释放资源。

代码示例:

from spire.xls import *
from spire.common import *
import xml.etree.ElementTree as ET# 创建一个Workbook类的对象
workbook = Workbook()# 清除默认工作表并添加一个工作表
workbook.Worksheets.Clear()
worksheet = workbook.Worksheets.Add("学生信息")# 设置单元格格式
for i in range(len(worksheet.Columns)):col = worksheet.Columns.get_Item(i)col.ColumnWidth = 10# 加载 XML 数据
xml_tree = ET.parse("学生信息.xml")
xml_root = xml_tree.getroot()# 获取第一个order节点来确定列数和表头
first_student = xml_root.find("student")
header = list(first_student.iter())[1:]  # 跳过第一个节点# 写入表头
for col_index, header_node in enumerate(header, start=1):header_text = header_node.tagworksheet.SetValue(1, col_index, header_text)# 写入数据
row_index = 2
for student in xml_root.iter("student"):for col_index, data_node in enumerate(list(student.iter())[1:], start=1):  # 跳过第一个节点value = data_node.textheader_text = list(header[col_index - 1].iter())[0].tagworksheet.SetValue(row_index, col_index, value)row_index += 1# 保存工作簿为新的 Excel 文件
workbook.SaveToFile("output/写入XML到工作表.xlsx")
workbook.Dispose()

部分XML数据:

<?xml version="1.0" encoding="UTF-8"?>
<students><student><id>1</id><name>John Doe</name><major>Data Science</major><gpa>3.8</gpa><age>20</age><gender>Male</gender><contact><email>john.doe@example.com</email><phone>123-456-7890</phone></contact></student>

输出的Excel工作簿:
XML写入Excel工作表

总结
本文介绍了如何使用Python将各种数据保存为Excel表格,包括文本、数组、XML、CSV等。通过Python代码,我们可以轻松地保存各种数据到Excel工作表中,实现批量操作,快速生成视觉友好地电子表格。Spire.XLS for Python还支持许多其他功能,可前往Spire.XLS for Python教程查看。

相关文章:

如何通过Python将各种数据写入到Excel工作表

在数据处理和报告生成等工作中&#xff0c;Excel表格是一种常见且广泛使用的工具。然而&#xff0c;手动将大量数据输入到Excel表格中既费时又容易出错。为了提高效率并减少错误&#xff0c;使用Python编程语言来自动化数据写入Excel表格是一个明智的选择。Python作为一种简单易…...

跟着cherno手搓游戏引擎【2】:日志系统spdlog和premake的使用

配置&#xff1a; 日志库文件github&#xff1a; GitHub - gabime/spdlog: Fast C logging library. 新建vendor文件夹 将下载好的spdlog放入 配置YOTOEngine的附加包含目录&#xff1a; 配置Sandbox的附加包含目录&#xff1a; 包装spdlog&#xff1a; 在YOTO文件夹下创建…...

Ubuntu20.04 上启用 VCAN 用作本地调试

目录 一、启用本机的 VCAN​ 编辑 1.1 加载本机的 vcan 1.2 添加本机的 vcan0 1.3 查看添加的 vcan0 1.4 开启本机的 vcan0 1.5 关闭本机的 vcan0 1.6 删除本机的 vcan0 二、测试本机的 VCAN 2.1 CAN 发送数据 代码 2.2 CAN 接收数据 代码 2.3 CMakeLists.…...

LeetCode(31) 下一个排列

整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地&#xf…...

Git LFS: 简单高效的大文件版本控制

Git Large File Storage 问题 在使用git上传大文件时候&#xff0c;git push时候会报错: remote: error: File xxx.tar.gz is 135.17 MB; this exceeds GitHubs file size limit of 100 MB可以看到&#xff0c;git限制上传大小是100MB&#xff0c;超过的话就会报错&#xff…...

如何培养用户思维

产品开发是根据用户要求建造出系统的过程&#xff0c;产品开发是一项包括需求捕捉、需求分析、设计、实现和测试的系统工程&#xff0c;一般通过某种程序设计语言来实现。然而用户思维能够帮助企业更好地理解市场需求&#xff0c;进行产品的开发和完善&#xff0c;用户是企业产…...

由浅入深理解C#中的事件

目录 本文较长&#xff0c;给大家提供了目录&#xff0c;可以直接看自己感兴趣的部分。 前言有关事件的概念示例​ 简单示例​ 标准 .NET 事件模式​ 使用泛型版本的标准 .NET 事件模式​ 补充总结 参考前言 前面介绍了C#中的委托&#xff0c;事件的很多部分都与委托…...

Nginx(十六) 配置文件详解 - server stream服务流

本篇文章主要讲 ngx_stream_core_module 模块下各指令的使用方法&#xff0c;Nginx默认未配置该模块&#xff0c;需要用“--with-stream”配置参数重新编译Nginx。 worker_processes auto;error_log /var/log/nginx/error.log info;events {worker_connections 1024; }stream…...

Css中默认与继承

initial默认样式&#xff1a; initial 用于设置 Css 属性为默认值 h1 {color: initial; }如display或position不能被设置为initial&#xff0c;因为有默认属性。例如&#xff1a;display:inline inherit继承样式&#xff1a; inherit 用于设置 Css 属性应从父元素继承 di…...

gitee上的vue大屏项目

在 Gitee 上,有几个值得注意的 Vue 大屏项目:vue-big-screen-plugin (Gitee): 这是一个基于 Vue3、Typescript、DataV 和 ECharts5 框架的可视化大屏项目。它使用 .vue 和 .tsx 文件构建界面,并采用新版动态屏幕适配方案。这个项目支持数据的动态刷新渲染,内部的 DataV 和 …...

【LeetCode:114. 二叉树展开为链表 | 二叉树 + 递归】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…...

社保养老金发放计算方法

退休后养老金计算公式很复杂&#xff0c;自己自行百度查一下&#xff0c;这里说一下男性&#xff0c;女工人&#xff0c;女干部之间计算差别。 退休后&#xff0c;能到手的养老金多少&#xff0c;取决于你的个人账户里的钱&#xff0c;个人账户里的钱越多&#xff0c;到手养老…...

概率论基础复习题

一、填空题 二、选择题 答案&#xff1a;B 答案&#xff1a;C 答案&#xff1a;C 答案&#xff1a;D。统计量不含任何未知参数。 答案&#xff1a;A 答案&#xff1a;C 样本均值是总体均值的无偏估计&#xff1b;样本方差是总体方差的无偏估计。 答案&#xff1a;B。统计值是一…...

c++,mutex,unique_lock,recursive_mutex,shared_mutex对比分析

当处理多线程并发时&#xff0c;正确使用锁是确保线程安全的关键。 1. std::mutex&#xff08;互斥锁&#xff09;&#xff1a; std::mutex 是C标准库提供的最基本的锁。它的基本使用如下&#xff1a; #include <iostream> #include <mutex> #include <threa…...

MySQL与Oracle数据库在网络安全等级方面用到的命令

MySQL数据库命令集 查看数据库版本 SELECT VERSION(); 空口令查询 SELECT user,host,account_locked FROM mysql.user WHERE user ; SELECT * FROM mysql.user; 查询 用户的密码加密情况 SELECT HOST,USER,PLUGIN FROM mysql.user; 查询是否有空用户 SELECT host,user,plug…...

MySQL——视图

目录 一.视图介绍 二.基本使用 三.视图规则和限制 一.视图介绍 视图是一个虚拟表&#xff0c;其内容由查询定义。同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。视图的数据变化会影响到基表&#xff0c;基表的数据变化也会影响到视图。 二.基本使用 创…...

【响应式编程-03】Lambda表达式底层实现原理

一、简要描述 Lambda的底层实现原理Lambda表达式编译和运行过程 二、Lambda的底层实现原理 Lambda表达式的本质 函数式接口的匿名子类的匿名对象 反编译&#xff1a;cfr-0.145.jar 反编译&#xff1a;LambdaMetafactory.metafactory() 跟踪调试&#xff0c;转储Lambda类&#x…...

深入理解可变参数

1.C语言方式 目录 1.C语言方式 1.1.宏介绍 1.2.原理详解 1.3.宏的可变参数 1.4.案例分析 1.5.其他实例 2.C之std::initializer_list 2.1.简介 2.2.原理详解 2.3.案例分析 3.C之可变参数模版 3.1.简介 3.2.可变参数个数 3.3.递归包展开 3.4.逗号表达式展开 3.5…...

Centos7.9和Debian12部署Minio详细流程

一、安装minio Centos wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20230227181045.0.0.x86_64.rpm -O minio.rpm sudo dnf install minio.rpmDebian wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio_20230227181045.0…...

软件测试|教你如何使用UPDATE修改数据

简介 在SQL&#xff08;Structured Query Language&#xff09;中&#xff0c;UPDATE语句用于修改数据库表中的数据。通过UPDATE语句&#xff0c;我们可以更新表中的特定记录或多条记录&#xff0c;从而实现数据的修改和更新。本文将详细介绍SQL UPDATE语句的语法、用法以及一…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘

美国西海岸的夏天&#xff0c;再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至&#xff0c;这不仅是开发者的盛宴&#xff0c;更是全球数亿苹果用户翘首以盼的科技春晚。今年&#xff0c;苹果依旧为我们带来了全家桶式的系统更新&#xff0c;包括 iOS 26、iPadOS 26…...

Spark 之 入门讲解详细版(1)

1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室&#xff08;Algorithms, Machines, and People Lab&#xff09;开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目&#xff0c;8个月后成为Apache顶级项目&#xff0c;速度之快足见过人之处&…...

循环冗余码校验CRC码 算法步骤+详细实例计算

通信过程&#xff1a;&#xff08;白话解释&#xff09; 我们将原始待发送的消息称为 M M M&#xff0c;依据发送接收消息双方约定的生成多项式 G ( x ) G(x) G(x)&#xff08;意思就是 G &#xff08; x ) G&#xff08;x) G&#xff08;x) 是已知的&#xff09;&#xff0…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...