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

python-docx把dataframe表格添加到word文件中

python-docx把dataframe表格添加到word文件中思路较为简单:

  1. 先把dataframe格式转变为table
  2. 新建一个段落:document.add_paragraph()
  3. table添加到这个段落下方

效果图

在这里插入图片描述

示例代码

from docx import Document, oxml
import pandas as pd
import numpy as np
from docx.oxml.ns import qn
from docx.oxml import OxmlElement
import random# 设置 table 的边框,用法与 cell 类似
def set_table_boarder(table, **kwargs):"""Set table`s borderUsage:set_table_border(cell,top={"sz": 12, "val": "single", "color": "#FF0000"},bottom={"sz": 12, "color": "#00FF00", "val": "single"},left={"sz": 24, "val": "dashed"},right={"sz": 12, "val": "dashed"},)"""borders = OxmlElement('w:tblBorders')for tag in ('bottom', 'top', 'left', 'right', 'insideV', 'insideH'):edge_data = kwargs.get(tag)if edge_data:any_border = OxmlElement(f'w:{tag}')for key in ["sz", "val", "color", "space", "shadow"]:if key in edge_data:any_border.set(qn(f'w:{key}'), str(edge_data[key]))borders.append(any_border)table._tbl.tblPr.append(borders)return tabledef set_table_singleBoard(table):"""为表格添加边框"""return set_table_boarder(table,top={"sz": 4, "val": "single", "color": "#000000"},bottom={"sz": 4, "val": "single", "color": "#000000"},left={"sz": 4, "val": "single", "color": "#000000"},right={"sz": 4, "val": "single", "color": "#000000"},insideV={"sz": 4, "val": "single", "color": "#000000"},insideH={"sz": 4, "val": "single", "color": "#000000"})def convert_df_to_table(document, dataframe: pd.DataFrame, index_list=None, column_list=None):"""把table转为dataframe:param document: 文档对象:param dataframe: dataframe格式数据:param index_list: 最左边一列显示的内容:param column_list: (第一行)列名称需要显示的内容"""rows = dataframe.shape[0]cols = dataframe.shape[1]if index_list is not None:cols += 1if column_list is not None:rows += 1table = document.add_table(rows=rows, cols=cols)row_i = 0col_i = 0if index_list is not None:raiseif column_list is not None:hdr_cells = table.rows[row_i].cellsfor _col_i, _v in enumerate(column_list):hdr_cells[_col_i].text = str(_v)row_i += 1for _i, series_info in enumerate(dataframe.iterrows()):series = series_info[1]hdr_cells = table.rows[row_i + _i].cellsfor _c_i, _cell_value in enumerate(series):hdr_cells[col_i + _c_i].text = str(_cell_value)return tabledef main():# 1. 把要插入的数据调整为dataframe格式dataframe = pd.DataFrame({"列1": [round(random.random(), 2) for _ in range(3)],"列2": [round(random.random(), 2) for _ in range(3)],"列3": [round(random.random(), 2) for _ in range(3)],})document = Document()# 2. 插入表格table = convert_df_to_table(document, dataframe, column_list=dataframe.columns.tolist())table = set_table_singleBoard(table)  # 表格添加边框base_paragraphs = document.add_paragraph("下面插入表格:")base_paragraphs._p.addnext(table._tbl)# 3. 保存修改后的结果document.save('测试_添加表格.docx')  # 保存后导出if __name__ == '__main__':main()

上述代码会得到如下效果图:

在这里插入图片描述

相关文章:

python-docx把dataframe表格添加到word文件中

python-docx把dataframe表格添加到word文件中思路较为简单: 先把dataframe格式转变为table新建一个段落:document.add_paragraph()把table添加到这个段落下方 效果图 示例代码 from docx import Document, oxml import pandas as pd import numpy as …...

Web AP—BOM 浏览器对象模型

代码下载 BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。 BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。 BOM 缺乏标…...

Flink分流,合流,状态,checkpoint和精准一次笔记

第8章 分流 1.使用侧输出流 2.合流 2.1 union :使用 ProcessFunction 处理合流后的数据 2.2 Connect : 两条流的格式可以不一样, map操作使用CoMapFunction,process 传入:CoProcessFunction 2.2 BroadcastConnectedSt…...

c# 实现sql查询DataTable数据集 对接SqlSugar ORM

有时候对于已经查询到的数据集,想要进行二次筛选或者查询,还得再查一遍数据库 或者其他的一些逻辑处理不太方便,就想着为什么不能直接使用sql来查询DataTable呢? 搜索全网没找到可用方案,所以自己实现了一个。 主要…...

记一次布尔盲注漏洞的挖掘与分析

在上篇文章记一次由于整型参数错误导致的任意文件上传的漏洞成因的分析过程中,发现menu_id貌似是存在注入的。 public function upload() {$menu_id $this->post(menu_id);if ($id) {$where "id {$id}";if ($menu_id) {$where . " and menu_id…...

C++11 新特性 ---- noexcept

1. 异常 异常通常用于处理逻辑上可能发生的错误 在C98中,提供了一套完善的异常处理机制,直接在程序中将各种类型的异常抛出,从而强制终止程序的运行。 1.1 基本语法 当函数抛出异常时,程序会停止执行,并显示异常信息…...

《Linux运维总结:Centos7.6之OpenSSH7.4p1升级版本至9.4p1》

Centos通过yum升级OpenSSH 在官方支持更新的CentOS版本,如果出现漏洞,都会通过更新版本来修复漏洞。这时候直接使用yum update就可以升级版本。 yum -y update openssh 但是,CentOS更新需要有一段时间,不能在漏洞刚出来的时候就有…...

七夕节日表白:七大网页风格与其适用人群

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...

通达信指标公式16:使用BARSLAST函数写一个指标回测的思路

★★★★★博文原创不易,我的博文不需要打赏,也不需要知识付费,可以白嫖学习小技巧,喜欢的老铁可以多多帮忙点赞,小红牛在此表示感谢,就是对作者的最大支持。愿与诸君共勉,悟道于股市★★★★★…...

Jenkins自动化部署Vue项目

1、新建item,选择 Freestyle project 2、源码管理选择git,输入git仓库地址和授权账号,并指明要部署的分支 3、构建选择 Execute shell,输入vue项目打包命令 命令示例: source /etc/profile node -v npm config set re…...

Android JNI打印logcat日志

在 JNI 中打印日志可以使用 __android_log_print 函数来实现。该函数是 Android NDK 提供的一个用于在本地代码中输出日志消息到 logcat 的方法。 要在 JNI 中打印日志&#xff0c;请按照以下步骤进行操作&#xff1a; 在你的 JNI C/C 代码中包含 <android/log.h> 头文件…...

第28次CCF计算机软件能力认证(测试)

测试300分要是考试的时候也能这么发挥就好 第一题&#xff1a;现值计算 解题思路&#xff1a;直接模拟 n , m input().split() n int(n);m float(m) l list(map(int , input().split())) res 0 for i in range(0 , n 1):res pow(1 m , -i) * l[i] print(res) 第二题…...

九耶丨阁瑞钛伦特-Java高频面试题-请谈谈 ReadWriteLock 和 StampedLock

ReadWriteLock包括两种子锁 &#xff08;1&#xff09;ReadWriteLock ReadWriteLock 可以实现多个读锁同时进行&#xff0c;但是读与写和写于写互斥&#xff0c;只能有一个写锁线程在进行。 &#xff08;2&#xff09;StampedLock StampedLock是Jdk在1.8提供的一种读写锁&a…...

【Linux操作系统】深入探索Linux系统编程中的信号集操作函数

在Linux系统编程中&#xff0c;信号集操作函数是非常重要的工具&#xff0c;它们允许我们对信号进行管理和控制。本篇博客将详细介绍Linux系统编程中的信号集操作函数&#xff0c;包括信号集的创建、添加和删除信号&#xff0c;以及对信号集进行操作的常用函数。通过深入了解这…...

[C初阶笔记]P2

Git 1、Git是Linus为了帮助管理Linux内核开发 而开发的一个开放源码的分布式版本控制软件。 2、Git和TortoiseGit的作用。 Git中有各种命令行操作&#xff0c;来维护代码&#xff0c;可以将代码推送到代码托管平台。 TortoiseGit是将Git中各自命令行操作转化为图形化操作。 …...

C++并发编程学习01——hello concurrent world

经典用例 #include <iostream> #include <thread>void hello() {std::cout << "hello concurrent world" << std::endl; }int main() {std::thread t(hello);t.join(); }编译 g -g test.cpp -o out -lpthreadgdb调试 (gdb) r Starting pr…...

大数据扫盲(2): 数据分析BI与ETL的紧密关系——ETL是成功BI的先决条件

着业务的发展每个企业都将产生越来越多的数据&#xff0c;然后这些数据本身并不能直接带来洞察力并产生业务价值。为了释放数据的潜力&#xff0c;数据分析BI&#xff08;商业智能&#xff09;成为了现代企业不可或缺的一部分。然而&#xff0c;在数据分析的背后&#xff0c;有…...

Java web 中的 jsp

JSP是什么 JSP是动态网页编程技术 JSP的四大作用域 1.page 表示在当前页面有效 2.request 表现在一次请求中有效 3.session 表示在一次会话中有效 4.application 表示在整个应用程序中有效 jsp内置对象是什么 在jsp开发中会频繁使用到一些对象,如果每次我们在jsp页面中需要…...

uniapp 数组操作

字符串转数组 let string "12345,56789" string.split(,) // [12345,56789] 数组转字符串 let array ["123","456"] array.join(",") // "123,456" 数组元素删除 let array [123,456] // 删除起始下标为1&#xff0…...

数据结构算法--4堆排序

堆排序过程: >建立堆(大根堆) >得到堆顶元素&#xff0c;为最大元素 >去掉堆顶&#xff0c;将堆最后一个元素放到堆顶&#xff0c;此时可通过一次调整使堆重新有序 >堆顶元素为第二大元素 >重复步骤3&#xff0c;直到堆变空 此时是建立堆后的大根堆模型 将…...

英伟达汽车计算平台:从芯片到生态的自动驾驶全栈解决方案

1. 从GTC 2021看英伟达的汽车野心&#xff1a;不止于芯片的生态战争上周的GTC 2021大会信息量爆炸&#xff0c;光是汽车相关的发布就足以让整个行业消化好一阵子。作为一名长期跟踪汽车电子与自动驾驶技术演进的老兵&#xff0c;我习惯在每次大型技术发布会后&#xff0c;把那些…...

Go语言实现Dify与钉钉机器人集成:企业级AI应用开发实战

1. 项目概述&#xff1a;当Dify遇上钉钉&#xff0c;打造企业级AI应用新范式 最近在折腾一个挺有意思的项目&#xff0c;叫“MAyang38/dify-on-dingding-go”。光看名字&#xff0c;可能有点技术黑话的味道&#xff0c;但说白了&#xff0c;这就是一个“桥梁”项目。它的核心使…...

汽车资讯网站|基于springboot+vue的汽车资讯网站(源码+数据库+文档)

汽车资讯网站 目录 基于springbootvue的汽车资讯网站 一、前言 二、系统设计 三、系统功能设计 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取&#xff1a; 博主介绍&#xff1a;✌️大厂码农|毕设布道师&#xff0c;阿里云开…...

VR文旅大空间|沉浸式体验重塑文旅新场景

随着文旅产业不断升级&#xff0c;传统“走马观花式”的旅游体验已经难以满足游客日益增长的体验需求。如何让游客“留下来、玩得久、愿意分享”&#xff0c;成为各地文旅项目共同思考的问题。在这一背景下&#xff0c;VR大空间文旅逐渐走入大众视野&#xff0c;成为文旅融合发…...

PRIME OS:基于React与Supabase的浏览器操作系统架构解析

1. 项目概述如果你和我一样&#xff0c;对“浏览器里的操作系统”这个概念着迷&#xff0c;同时又对市面上那些要么过于玩具化、要么复杂到无从下手的项目感到失望&#xff0c;那么今天聊的这个项目——PRIME OS&#xff0c;绝对值得你花时间深入研究。它不是一个简单的桌面模拟…...

Gemini Pro长上下文处理翻车现场全复盘,128K token真实压测数据曝光,你还在用默认配置?

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Pro长上下文能力的本质认知与风险预警 Gemini Pro 的长上下文&#xff08;如支持高达 1M tokens 输入&#xff09;并非单纯“记忆增强”&#xff0c;而是基于分块注意力优化与上下文压缩策略的工…...

从Solyndra事件看美国太阳能产业转型与能源创新体系构建

1. 从Solyndra事件看美国太阳能产业的十字路口2011年秋天&#xff0c;加州弗里蒙特市&#xff0c;一家名为Solyndra的太阳能公司大门前&#xff0c;联邦官员正将一箱箱文件搬上卡车&#xff0c;而当地几乎所有的电视台摄像机都记录下了这一幕。这家曾获得美国能源部5.35亿美元贷…...

本地视频怎么去水印?2026实测去水印方法+本地视频去水印软件推荐

本地视频怎么去水印&#xff1f;2026实测去水印方法本地视频去水印软件推荐 视频上有水印&#xff0c;是很多人日常都会碰到的麻烦。录屏时工具自动打上的 Logo、剪辑软件试用期留下的标记、从平台保存下来时带着的角标……这些水印有时候影响不大&#xff0c;但只要你想二次使…...

告别RAM焦虑:手把手教你用MicroBlaze BootLoader把大程序塞进QSPI Flash和DDR3

突破FPGA内存瓶颈&#xff1a;MicroBlaze大型程序加载实战指南 当你的MicroBlaze项目从简单的控制逻辑升级到需要文件系统、网络协议栈甚至实时操作系统时&#xff0c;代码体积的膨胀速度往往超出预期。那些曾经足够用的BRAM资源突然变得捉襟见肘——这就像试图在智能手机上运行…...

ORAN专题系列-8:5G O-RAN Option7分体式小基站硬件白盒化的关键组件与部署场景剖析

1. 5G O-RAN Option7分体式架构的核心价值 第一次接触O-RAN Option7架构时&#xff0c;最让我惊讶的是它像乐高积木一样的模块化设计。这种分体式架构把传统基站拆解成三个独立部件&#xff1a;负责智能调度的O-DU&#xff08;分布式单元&#xff09;、承担信号转换的O-RU&…...