【GPT4结对编程】word文档导出功能GPT4来实现

news2025/1/11 12:41:05

需求背景

最近产品增加了一个导出word文档的需求,之前有导出过pdf格式、excel格式、csv格式,但还没导出过word文档。

开源框架调研

我们的后端服务主要是用golang,因此首先想到的是golang相关的开源工具,找到2个。

unioffice

这个是工具比较强大,支持微软办公软件的3件套,word、excel 和 ppt,但要使用的话需要商业授权,因此只能暂时放弃。

github.com/nguyenthenguyen/docx

另外找到的就是这个工具,个人开发着实现的,不过功能比较弱,有很多局限性:

  1. 只能基于word文档模版替换里面的内容;
  2. 图片的插入数量必须和模版里面的图片数量一致;
  3. 图片格式必须与模版里面的一致(png格式的图片不能使用jpg替换);
  4. 替换模版里面的标识符比较容易出错,似乎只要报错一下word文本里面的格式就替换不了(可能是我的问题);
  5. 不支持列表输出文档。

上面2个不满足需求,继续调研了下java相关的工具。

github.com/Sayi/poi-tl

功能也是支持word模版替换,比上面的golang工具稍微强大点:
1、支持list输出文档;
2、图片替换模版里面的文字,不限制图片格式,但是输出的图片格式有问题,会导致超过文字高度的图片被遮挡。

github.com/apache/poi

上面的poi-tl 的底层库实际上就是apache poi,调研apache poi发现他的功能非常强大,对微软的办公软件支持比较全面,文档也比较全,使用可以参考:https://www.tutorialspoint.com/apache_poi_word/apache_poi_word_quick_guide.htm

demo

了解这个信息之后,我直接让GPT4给我写demo,下面是我们的对话:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

从对话可以看的出来,GPT4强大的代码能力和理解能力,生成的代码都是可以直接运行的,每一次我需要对程序的修改,都能按照我想要的方式完成,我不需要去看POI的官网文档,不需要理解api,直接告诉GPT4我需要什么就可以了,真的非常逆天,我花了那么多时间调研来调研去,为何不一开始就问GPT4呢,可能我想体现自己的价值吧。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】蜜罐部署实战DecoyMini攻击诱捕

蜜罐部署实战&DecoyMini攻击诱捕 前言一、蜜罐1. 概念2. 蜜罐溯源常见方式3. 蜜罐分类 二、蜜罐项目实战1. 配置DecoyMini1.1 命令行窗口运行1.2 修改配置信息 2. 登录DecoyMini3. 克隆网站3.1 增加仿真网站3.2 增加诱捕器3.3 查看端口监听3.4 克隆成功(蜜罐&am…

Qt : day1

1.聊天界面 #include "widget.h"Widget::Widget(QWidget *parent): QWidget(parent) {qDebug() << this->size(); //获取当前页面尺寸this->setFixedSize(500, 600); //设置固定尺寸this->setWindowTitle("聊天框"); //设置窗口…

解决Cannot resolve plugin org.apache.maven.plugins:xxxxxxxx

解决Cannot resolve plugin org.apache.maven.plugins:xxxxxxxx 方法一、检查配置设置 下图中三个方框圈出来的地方设置为自己的下载的maven地址&#xff0c;配置文件地址&#xff0c;仓库地址。刷新maven。 我个人试过没用&#xff0c;不过网上有的朋友用这个方法解决了。 …

CBC字节翻转攻击介绍 例题

知识导入&#xff08;AES-CBC模式&#xff09; 加密过程 1、首先将明文分组(常见的以16字节为一组)&#xff0c;位数不足的使用特殊字符填充。 2、生成一个随机的初始化向量(IV)和一个密钥。 3、将IV和第一组明文异或。 4、用key对3中xor后产生的密文加密。 5、用4中产生的密文…

大厂案例 - 腾讯万亿级 Elasticsearch 架构实践

文章目录 概述提纲益处正文一、Elasticsearch 简介0. 应用领域搜索引擎可观测性安全检测发展现状 1.系统架构集群架构物理数据模型查询 2.腾讯应用现状搜索领日志实时分析时序数据 二、技术挑战1.可用性2.成本3.性能 三、架构设计实践1.可用性优化1.1 解决方案2.2 集群扩展性2.…

RK3588平台开发系列讲解(LCD篇)LCD的分辨率和像素格式

文章目录 一、分辨率二、像素格式三、LCD成像步骤四、LCD屏幕时序4.1、行显示时序4.2、帧显示时序沉淀、分享、成长,让自己和他人都能有所收获!😄 📢液晶 LCD 显示器是由两片平行的玻璃基板组成,两片平行的玻璃基板之间放置了一个液晶盒。在下基板玻璃上,有一组被称为薄…

【Postman】- 基本用法

一、用例集 1.1 用例集 Collections&#xff1a;用例集。目录下可以创建子目录。 1.2 导出用例集 1.3 导入用例集 二、Postman断言 断言&#xff1a;让程序判断预期结果和实际结果是否一致 2.1 特点 Postman的断言是使用JavaScript语言编写的&#xff0c;写在"Tests&…

Jvm参数优化

Jvm参数优化 背景1. 系统上线规划容量- 分析 2. 垃圾回收器选择吞吐量和响应时间垃圾回收器选择 3. 规划各个分区的比例大小4. 对象年龄对少移动到老年代合适5. 对象多大放到老年代6. 垃圾回收器CMS老年代参数优化7. 配置OOM时的内存dump文件和GC日志8. 通用JVM参数模板 背景 …

任务的调度 和 任务的状态

任务的调度 Q: 什么是任务调度&#xff1f; A: 调度器就是使用相关的调度算法来决定当前需要执行的哪个任务。 FreeRTOS中开启任务调度的函数是 vTaskStartScheduler() &#xff0c;但在 CubeMX 中被封装为 osKernelStart() 。 这个“osKernelStart()”就是在main.c中main函…

MyBatis源码分析_ResultSetHandler(7)

1. 传统JDBC Mybatis其实就是封装传统JDBC的&#xff0c;它和传统JDBC访问数据库基本一模一样。因此&#xff0c;不要觉得Mybatis有多高级。而 ResultSetHandler 就是处理我们JDBC访问数据库获取到的ResultSet结果集的。在此之前&#xff0c;我们还是先看一下传统JDBC&#xf…

5.2.10.应用程序如何调用驱动 mknod /dev/test c 250 0 创建设备文件,应用app 程序 调用 我们 驱动 壳子

5.2.10.应用程序如何调用驱动 5.2.10.1、驱动设备文件的创建 (1)何为设备文件 索引驱动 (2)设备文件的关键信息是&#xff1a;设备号 主设备号 次设备号&#xff0c;使用ls -l去查看设备文件&#xff0c;就可以得到这个设备文件对应的主次设备号。 4颗LED不可能 都占用 主设备…

【深度学习】日常笔记14

对神经网络模型参数的初始化方案对保持数值稳定性有很重要的作用。初始化⽅案的选择可以与⾮线性激活函数的选择有趣的结合在⼀起。 突然有感触&#xff1a;做习题和模拟考研就分别是训练集和验证集&#xff0c;考研不就是最后的测试集&#xff08;&#xff09; p168的↓的解释…

【计算机编程语言】JAVA-MyBatis(Eclipse)

文章目录 MyBatis1.简介1.1什么是Mybatis1.2持久化1.3持久层1.4为什么需要Mybatis 2.第一个Mybatis程序2.1搭建环境2.1.1.搭建数据库&#xff1a;2.1.2.新建项目&#xff08;工程&#xff09;2.1.3导入依赖 2.2创建一个模块2.2.1.编写Mybatis的核心配置文件2.2.2.编写Mybatis的…

linux学成之路(基础篇(二十三)MySQL服务(下)

目录 MySQL服务之SQL语句 一、SQL语句类型 一、 DDL语句 二、DML语句 三、DCL语句 四、DQL 语句 二、 数据库操作 一、查看 二、创建 三、进入 四、删除数据库 五、更改数据库名称 六、更改字符集 三、数据表管理 一、数据类型 一、数值类型 TINYINT SMALLINT…

JUC并发编程之CompletableFuture详解

目录 1.Future接口 1.1 Future介绍 1.1.1 FutureTask 1.1.2 代码示例 2. CompletableFuture 2.1 基本概念 2.2 代码示例 2.2.1 创建CompletableFuture 2.2.2 函数式接口&#xff08;补充&#xff09; 2.2.3 异步任务组合 1.Future接口 1.1 Future介绍 JUC并发编程中的…

(三)InfluxDB入门(借助Web UI)

以下内容来自 尚硅谷&#xff0c;写这一系列的文章&#xff0c;主要是为了方便后续自己的查看&#xff0c;不用带着个PDF找来找去的&#xff0c;太麻烦&#xff01; 第 3 章 InfluxDB入门&#xff08;借助Web UI&#xff09; 借助Web UI&#xff0c;我们可以更好地理解InfluxD…

SiddonGpu编译过程记录

1. 还是想要能够快速生成DRR&#xff0c;用了这个up的代码GitHub - fabio86d/CUDA_DigitallyReconstructedRadiographs: GPU accelerated python library for generation of Digitally Reconstructed Radiographs (March 2018) 在看步骤的时候不是很清晰。尤其是procedure to…

生产环境Session解决方案、Session服务器之Redis

目录 一、服务器配置 二、安装nginx 三、安装配置Tomcat&#xff1a; 四、配置session Session服务器之Redis Redis与Memcached的区别 安装部署redis 一、服务器配置 IP地址 主机名 软件包列表 192.168.100.131 huyang1 nginx 192.168.100.133 huyang3 JDK Tomca…

隧道安全监测解决方案

隧道安全监测 解决方案 一、监测目的 通过监控量测&#xff0c;实现信息化施工&#xff0c;不仅能及时掌握隧道实际的地质情况&#xff0c;掌握隧道围岩、支护衬砌结构的受力特征和变形情况&#xff0c;据此可以尽早发现塌方、大变形等灾害征兆&#xff0c;及时采取措施&…

Qgis二次开发-加载高德在线地图失败报错Raster layer Cannot instantiate the ‘wms‘ data provider

1.加载在线的高德地图 以下是在线高德地图地址。 http://webrd01.is.autonavi.com/appmaptile?x{x}&y{y}&z{z}&langzh_cn&size1&scale1&style8 以下是代码示例&#xff1a; #include <QApplication> #include <QMainWindow> #include …