当前位置: 首页 > 编程日记 > 正文

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

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

本文中将介绍如何使用Python写入数据到Excel表格,提供更高效和准确的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.tag
    worksheet.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.text
        header_text = list(header[col_index - 1].iter())[0].tag
        worksheet.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教程查看。

相关文章:

并发编程下的集合:数组寻址、LinkedList、HashMap、ConcurrentHashMap

如果发现hash取模后的数组索引位下无元素则直接新增,若不是空那就说明存在hash冲突,则判断数组索引位链表结构中的第一个元素的key以及hash值是否与新的key一致则直接覆盖,若不一致则判断当前的数组索引下的链表结构是否为红黑树,若为红黑树则走红黑树的新增方法,若不为红黑树则遍历当前链表结构,遍历中发现某个节点元素的next为null是则直接将新元素指针与next进行关联,若在遍历到next为空前判断到,某个节点的key以及key的hash值与新的key与新的keyhash值一致时则走覆盖。

【Linux之升华篇】Linux内核锁、用户模式与内核模式、用户进程通讯方式

alloc_pages(gfp_mask, order),_ _get_free_pages(gfp_mask, order)等。字符设备描述符 struct cdev,cdev_alloc()用于动态的分配 cdev 描述符,cdev_add()用于注。外,还支持语义符合 Posix.1 标准的信号函数 sigaction(实际上,该函数是基于 BSD 的,BSD。从最初的原子操作,到后来的信号量,从。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的。

【日常开发之Windows共享文件】Java实现Windows共享文件上传下载

下拉框选择你选择的用户点击添加,然后共享确定。创建一个文件夹然后点击属性界面,点击共享。maven版本存在于SMB协议的兼容问题。首先开启服务,打开控制面板点击程序。点击启用或关闭Windows功能。我这边是专门创建了一个用户。SMB1.0选中红框内的。

rust wasm入门

demo## 编译 Rust 为 WebAssembly在本教程中,我们将使用 Rust 的 npm 包构建工具 wasm-pack 来构建一个 npm 包。

iced 入门一

本教程的目标是创建一个简单的购物清单应用程序。我们希望允许添加和删除购物清单中的项目。在编写代码之前,我们必须首先了解 Iced 构建的结构:Elm 架构。它是 GUI 库使用的架构,最初用于 Elm 编程语言。它的核心原则很简单。它围绕三个概念构建:模型、视图和更新。

注解annotation

Kubernetes的系统组件(例如,kube-scheduler、kube-controller-manager、kube-apiserver、kubectl 或其他第三方组件)向用户的Kubernetes对象添加注解时,必须指定一个前缀。注解(annotation)可以用来向 Kubernetes 对象的 metadata.annotations 字段添加任意的信息。除了使用注解,您也可以将这类信息存放在一个外部的数据库,然而,在使用、分享这些信息的时候,可能会变得难以管理。

Rust XTask 模式介绍与应用

XTask(扩展任务)是一种在Rust项目中定义和执行自定义构建任务的方式。它通过创建一个独立的Rust库或二进制项目来封装这些任务,利用Rust语言的强类型、安全性和跨平台能力,使得构建流程更加健壮、可读和可维护。

Ubuntu下安装和配置Redis

找到 /ect/redis/redis.conf 文件修改如下:注释掉 127.0.0.1 ,如果不需要远程连接redis则不需要这个操作。使用客户端向 Redis 服务器发送一个 PING ,如果服务器运作正常的话,会返回一个 PONG。默认情况下,Redis服务器不允许远程访问,只允许本机访问,所以我们需要设置打开远程访问的功能。执行sudo apt-get install redis-server 安装命令。查看 redis 是否启动,重新打开一个窗口。停止/启动/重启redis。

ModuleNotFoundError: No module named ‘qcloud_cos‘

是腾讯云提供的一个Python SDK,用于与腾讯云对象存储(COS)服务进行交互。使用pip安装qcloud_cos报以下错误。这个错误表示Python无法找到名为。

linux常用操作指令—— 查看磁盘、内存使用情况(df、du、free、top)

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示。free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。当文件系统也确定删除了该文件后,这时候du与df就一致了。实例4:显示目前磁盘空间和使用情况 (最常用)top:“实时查看” ,按。退出 (实时动态显示)

需要在method方法被调用之后,仅打印出a=100,b=200,请写出method方法的代码

通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。通常,此流对应于键盘输入或者由主机环境或用户指定的另一个输入源。public static final PrintStream err“标准”错误输出流。PrintStream 是打印输出流,它继承于FilterOutputStream。第二个用的是用的是char类型,根本不是方法,当要输出方法体的时候,会给你遍历数组。通常,此流对应于显示器输出或者由主机环境或用户指定的另一个输出目标。诡异的是,如果错了,面试官对你说了一句:你回去看看,

Linux下netstat命令详解&&netstat -anp | grep 讲解

Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。

Linux命令——根据端口号查进程

查出的数据第二列(16615)是elasticsearch的进程号。通常我们会根据端口号查进程号,或者通过进程号查端口号。linux环境下,我们常常会查询进程号pid。最常用ps -ef |grep xx。根据端口port查进程。根据端口port查进程。根据进程pid查端口。根据进程pid查端口。

Linux搜索文件&搜索文件名&替换文件内容

locate是Linux系统提供的一种快速检索全局文件的系统命令,它并不是真的去检索所以系统目录,而是检索一个数据库文件locatedb(Ubuntu系置/var/cache/locate/locatedb),该数据库文件包含了系统所有文件的路径索引信息,所以查找速度很快。time结尾的选项,其单位为天,min结尾的选项其单位为分钟,这些选项的值都为一个正负整数, 如+7,表示,7天以前被访问过的文件,-7表示7天以内被访问过的文件,7表示恰好7天前被访问的文件。:快速返回某个指定命令的位置信息。

一个合格的Java选手必须要掌握的并发锁知识

Java内置锁:基于Java语法层面(关键词)实现的锁,主要是根据Java语义来实现,最典型的应用就是synchronized。Java显式锁:基于JDK层面实现的锁,主要是根据基于Lock接口和ReadWriteLock接口,以及统一的AQS基础同步器等来实现,最典型的有ReentrantLock。使用方式:synchronized关键字互斥锁主要有作用于对象方法上面,作用于类静态方法上面,作用于对象方法里面,作用于类静态方法里面等4种方式。

Integer.toHexString(b & 0xff)理解以及& 0xff什么意思

首先toHexString传的参数应该是int类型32位,此处传的是byte类型8位,所以前面需要补24个0。然后& 0xff 就是把前面24个0去掉只要后8位。toHexString(b & 0xff)相当于做了一次位的与运算,将前24位字符省略,将后8位保留。是两个十六进制的数,每个f用二进制表示是1111,所以占四位(bit),两个f()占八位(bit),八位(bit)也就是一个字节(byte).这个方法是把字节(转换成了int)以16进制的方式显示。我的理解是这样,如有不对欢迎指正!

python安装成功的图标_ubuntu下:安装anaconda、环境配置、软件图标的创建、成功启动anaconda图形界面...

Ubuntu安装anaconda常见的四大问题&#xff1a;目录1、介绍2、安装anaconda3、环境配置4、软件图标的创建5、成功启动anaconda图形界面1、介绍先介绍一下anaconda和python的关系&#xff1a;初学者所安装的python2/3只是python的环境&#xff0c;没有python的工具包&a…

[Ubuntu 22.04] Docker安装及使用

容器的生命周期由用户控制,用户可以选择手动删除容器或让其保留在系统中以供之后使用。选项允许你在容器内部创建一个交互式的终端会话,使你可以像在本地终端一样与容器进行交互。你可以在容器内执行命令,查看输出并输入命令。镜像拉取完成后,可以使用以下命令创建并启动一个基于 Ubuntu 20.04 镜像的容器。列出所有正在运行的容器,并显示它们的容器ID、镜像、命令、创建时间、状态等信息。以下命令可以中止容器,改命令将向容器发送一个停止信号,使其正常停止并退出。这将显示所有容器的列表,包括正在运行的和已停止的容器。

使用JavaScript实现复杂功能:一个完整的电商网站搜索功能

随着互联网的发展,电子商务网站已经成为人们购物的重要平台。而在这些网站中,搜索功能无疑是核心功能之一。用户可以通过搜索快速找到他们需要的商品,从而提高购物体验。本文将详细介绍如何使用JavaScript实现一个完整的电商网站搜索功能。

C++并发编程:互斥锁std::mutex和lock_guard的使用

对象离开其作用域时,会自动调用析构函数,该析构函数会释放锁。这确保了在任何情况下(包括由于异常等原因导致的提前退出),锁都会被正确释放,从而避免了忘记手动释放锁而导致的死锁问题。mutex 用于控制多个线程访问共享资源,确保在任意时刻只有一个线程可以访问该资源,避免数据竞争。这确保了同一时刻只有一个线程可以访问被保护的资源,从而防止多线程并发访问导致的数据不一致性。是 C++ 标准库中提供的一个模板类,用于在其构造时自动获取锁,在析构时自动释放锁。是 C++ 标准库中提供的一种用于多线程同步的互斥锁实现。

上位机图像处理和嵌入式模块部署(qt插件的使用)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 一个软件一般有很多的功能,但是主流程只有一个。但在软件开发的过程当中,一般来说功能是需要不断添加的,但是主流程最好不要轻易修改。这里的插件就相当于各种各样的功能,而主流程就是如何怎么去调用这些插件的功能。所以,今天正好来学一下怎么添加qt插件,个人觉得这部分还是非常重要的。

C程序的内存空间布局(栈、堆、数据区、常量区、代码区)

较详细的介绍了栈、堆、数据区、常量区、代码区

给服务器开通telnet的流程

但一些特殊场景下,比如要升级ssh,ssh不能用时,需要使用telnet,用过要关闭此服务。需要首先安装,如果telnet-server服务在xinetd之前安装了,要先删除telnet-server,再安装xinetd。安装顺序:xinetd--》telnet--》telnet-server。安装顺序:xinetd--》telnet--》telnet-server。2、卸载rpm包(如果已经安装了,又不清楚顺序,可以都卸载后统一安装)注意:telnet-server服务启动依赖xinetd服务,

Java中的四种访问权限(private,public,protected,无修饰)

/实体类属性和数据库字段名称不一致//实体类属性和数据库字段名称不一致return id;return age;emp.test();//直接调用public修饰的变量//private修饰的变量进行赋值//调用private修饰的变量1、public修饰符定义的属性和方法通过对象实例化进行调用,2、private修饰的属性通过set、get方法进行调用。

使用DockerFile构建镜像与镜像上传

首先Dockerfile 是一个文本格式的配置文件, 用户可以使用 Dockerfile 来快速创建自定义的镜像。

Java中的方法重载和方法重写有什么区别?

Java中的方法重载(Overloading)和方法重写(Overriding)都是面向对象编程中的重要概念,但它们之间有一些区别。方法重载是指在同一个类中,可以定义多个具有相同名称但参数列表不同的方法。这些方法具有不同的参数类型、参数个数或参数顺序。在调用重载方法时,Java编译器会根据传递给方法的参数类型和数量来选择要调用的正确方法。方法重载主要用于解决方法的命名冲突和提高代码的可读性和可维护性。

python基础使用之变量,表达式,语句

PYTHON基础知识系列之变量、表达式、语句

C语言常见面试题:什么是宏,宏的作用是什么?

宏在计算机科学中是一种批量处理程序命令,它是一种抽象的规则或模式,用于说明某一特定输入(通常是字符串)如何根据预定义的规则转换成对应的输出(通常也是字符串)。在编译时,预处理器会对宏进行展开,即将宏的内容替换到宏所在的位置。以上是宏的一些主要作用,但并不是全部。在实际编程中,根据需要选择是否使用宏以及如何使用宏,以实现更好的代码组织和可读性。,这样就可以计算出a和b的和。这个例子展示了宏的基本用法和作用。在这个例子中,我们定义了一个宏。,用于计算两个数的和。时,预处理器会将其展开为。

python基础小知识:引用和赋值的区别

通过引用,就可以在程序范围内任何地方传递大型对象而不必在途中进行开销巨大的赋值操作。不过需要注意的是,这种赋值仅能做到顶层赋值,如果出现嵌套的情况下仍不能进行深层赋值。赋值与引用不同,复制后会产生一个新的对象,原对象修改后不会影响到新的对象。如果在原位置修改这个可变对象时,可能会影响程序其他位置对这个对象的引用

Golang 搭建 WebSocket 应用(八) - 完整代码

本文应该是本系列文章最后一篇了,前面留下的一些坑可能后面会再补充一下,但不在本系列文章中了。