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

需求背景

最近产品增加了一个导出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,下面是我们的对话:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最终版本

import org.apache.poi.util.Units;
import org.apache.poi.xwpf.usermodel.*;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.imageio.ImageIO;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import java.util.Arrays;
import java.util.List;@RestController
public class WordTemplateController {@GetMapping(value = "/download", produces = MediaType.APPLICATION_OCTET_STREAM_VALUE)public void download(HttpServletResponse response) throws Exception {// 创建一个新的文档XWPFDocument doc = new XWPFDocument();// 添加文本XWPFParagraph p1 = doc.createParagraph();XWPFRun r1 = p1.createRun();r1.setText("这是一段文本。");r1.setFontSize(14);  // 设置字体大小r1.setBold(true);  // 设置为加粗// 添加换行r1.addBreak();// 添加另一段文本XWPFRun r2 = p1.createRun();r2.setText("这是另一段文本。");r2.setFontSize(12);  // 设置字体大小r2.setBold(false);  // 设置为非加粗// 图片URL列表List<String> imgUrls = Arrays.asList("http://example.com/image1.jpg", "http://example.com/image2.jpg");for (String imgUrl : imgUrls) {URL url = new URL(imgUrl);URLConnection connection = url.openConnection();InputStream is = connection.getInputStream();// 读取图片并获取其宽度和高度BufferedImage img = ImageIO.read(is);int widthPx = img.getWidth();int heightPx = img.getHeight();// 按照需要的比例调整宽度和高度double scale = 0.5;  // 缩小到原来的50%int width = Units.toEMU(widthPx * scale);int height = Units.toEMU(heightPx * scale);// 重新打开输入流,因为之前的已经被读取过了is = url.openStream();XWPFParagraph p = doc.createParagraph();XWPFRun r = p.createRun();int format = XWPFDocument.PICTURE_TYPE_JPEG;r.addPicture(is, format, imgUrl, width, height);}// 设置响应头response.setHeader("Content-Disposition", "attachment; filename=output.docx");response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document");// 将文档写入到

总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于GEC6818的智能家居管理系统

基于GEC6818的智能家居管理系统 使用步骤&#xff1a; 1、首先通过交叉编译make&#xff0c;生成可执行文件main 2、然后拷贝到开发板上&#xff0c;在开发板上对安装led和beep的驱动 3、加权限 然后执行 然后就可以在开发板上显示系统了(密码默认1234) 功能简介 本系统主…

智能家居服务发现实现

服务设备软件架构设计 代码复用 将网络通信框架移植到开发板&#xff0c;之后&#xff0c;可以使用框架中的组件实现 Response Task 和 Service Task。 框架移植注意事项 LWIP 是微型 TCP/IP 协议栈 (并非完整 TCP/IP 协议栈) 支持 socket 接口&#xff0c;但一些功能未实现…

基于MQTT的智能家居程序框架

小白能懂&#xff1a;嵌入式进阶&#xff1a;RTOS嵌入式系统框架 第一章 嵌入式常用裸机编程框架 第二章 面向对象编程基础 第三章 ESP8622物联网基础 第四章 STM32与ESP8266物联网编程 第五章 物联网编程优化 第六章 以OLED为例介绍RTOS面向对象编程 第七章 基于MQTT的智能家…

智能家居 —— 串口通信(语音识别)线程控制

文章目录 串口通信线程控制代码mianPro.cinputCommand.hvoiceControl.c测试结果 语音控制部分语言控制模块YS-LDV7 若要完成串口之间的通信&#xff0c;需要再树莓派上完成配置文件的修改&#xff0c;利用测试代码验证串口收发功能是否正常&#xff0c;详情可以参考博文&#x…

智能家居(3) —— 串口通信(语音识别)线程控制

目录 一、串口通信线程控制代码 mianPro.c inputCommand.h voiceControl.c 测试结果 二、语音控制部分 一、串口通信线程控制代码 mianPro.c #include <pthread.h> #include "controlDevice.h" #include "inputCommand.h"struct InputCommand…

[第一步]homekit智能家居,homebridge与homebridge-aqara通信协议

根据这个就可以使用iphone控制灯与开关. 折腾了3个晚上,终于将homebridge安装好,安装之前需要安装一堆的库,比如node.js运行环境等,因为网上资料大部分都是在树莓派上面运行,我是直接在ubuntu上面进行的测试,因为安装会有所区别,但是安装好之后就一样了,安装方法在此我就不写了…

智能家居系统 QT

一 环境范围设置 &#xff08;1&#xff09;界面添加新控件 在mainwindow.ui 添加控件&#xff1a; 控件的类型 文本内容 对象名&#xff08;唯一&#xff09; 是否有槽函数 QLabel <温度< lable_随意 否 QLabel <湿度< lable_随意 否 QLabel <光…

Home Assistant 智能家居自动化

一、Home Assistant 自动化中的一个重要概念——模式 引入模式&#xff0c;用于解决正在执行过程中的同一规则又一次被触发的问题 二、Home Assistant 自动化规则的组成部分 2.1 触发条件Trigger&#xff1a;表示智能家居中事件或状态的转换 可选持续时间(特有) trigger有…

qt实现智能家居系统

一、项目介绍 通过TCP/IP协议实现客户端和和服务端的链接&#xff0c;服务端和下位机通过串口通信的方式链接&#xff0c;传递信息&#xff0c;客户端通过账号登录进入进入智能家居服务系统&#xff0c;账号登录和QQ登录类似&#xff0c;我采用的是数据库的方式实现数据的存储和…

语音识别智能家居控制设计

目录 一、方案流程及技术规格书设计 二、系统硬件电路设计 三、软件编写及调试 四、系统调试测试与分析 前言 随着科学技术的快速发展&#xff0c;人们对生活品质的要求也不断提高&#xff0c;开始追求更好更方便的生活方式。因此&#xff0c;智能家居系统应运而生。智能家…

智能家居之网关

网关诞生的背景 很多物联网终端设备在设计之初就考虑了低功耗、低成本的需求&#xff0c;因此大量的物联网终端设备是靠电池来工作并且需要运行相当长的一段时间&#xff0c;比如油田、农业相关的传感器&#xff0c;且这些终端设备不需要实时与物联网平台通讯&#xff0c;甚至…

智能家居是否可与ChatGPT深度融合?

​ ChatGPT自2022年面世以来&#xff0c;已为亿万网民提供智能问答服务。然而我们是否曾想到&#xff0c;这一人工智能驱动的聊天机器人&#xff0c;是否可为智能家居赋能? 要实现ChatGPT与智能家居设备之间的无缝对话&#xff0c;单单依靠一台终端是远远不够的。ChatGPT必须…

调查报告数据分析怎么做?

调查报告数据分析怎么做&#xff1f;拿到一份调查报告看选题、选题内容、调查的目的&#xff0c;然后清洗数据&#xff0c;分析数据提炼观点&#xff0c;过数据变化规律&#xff0c;揭示事物内在发展变化和趋势&#xff0c;抓住问题的本质和关键。 一、分析数据提炼观点 数据分…

pyqt5制作翻译软件+爬虫

VSCpythonmysql&#xff0c; 文章目录 目录 文章目录 前言 一、详细代码 第一个文件Ui_untitled.py 第二个fy_main.py文件&#xff1a; 第三个 &#xff1a;bd_pachong.py 二、登录界面&#xff1a; 总结 前言 通过pyqt5实现了翻译界面的可视化&#xff0c;利用python爬虫实现了…

给 30 岁左右的你三个职场跃迁/改变命运的建议!

见字如面&#xff0c;我是军哥&#xff01; 通过公众号的后台用户画像数据&#xff0c;我发现我的读者在 26 到 32 岁的年龄阶段的人数最多&#xff0c;所以今天来聊一聊这个话题&#xff0c;你一定要看到最后&#xff0c;会让你少走很多弯路&#xff01; 核心观点主要包括三个…

38岁程序员和你分享4个人生经验!

蓝色关注&#xff0c;回复“1”获取知名公司程序员和产品经理职级 这是我的第「123」篇原创文章 见字如面&#xff0c;我是军哥。 我最近一直想写一篇稍微长点的文章&#xff0c;毕竟内容篇幅有时候决定内容广度和深度。 距离我之前写的那篇文章《一位互联网老兵的五次认知升级…

【我命由我不由天】30多岁的大龄程序员,应该如何保持职场竞争力?

公众号后台回复“学习”&#xff0c;获取作者独家秘制精品资料 扫描下方海报二维码&#xff0c;试听课程&#xff1a; &#xff08;课程详细大纲&#xff0c;请参见文末&#xff09; 目录 回首往事&#xff1a;自己竟没有任何核心优势&#xff01;公司遇到危机时&#xff0c;大…

写给互联网人35岁之后的建议

作者介绍 李凯东 某大厂大数据总监&#xff0c;管理经验丰富&#xff1b; 负责数据、用户、搜索、推荐、AI等&#xff1b; 曾有10年连续创业经历&#xff1b; 产研运全能&#xff0c;国内知名比赛获奖无数&#xff1b; “数据人创作者联盟”成员。 又到了春节&#xff0c…

程序员如何跨越35岁危机?这篇给点干货建议!

职场&认知洞察 丨 作者 / findyi 这是findyi公众号的第83篇原创文章 这两天在我的读者群里做了一个职业小调研&#xff0c;发现关注我公众号的70%以上都是程序员。 毕竟程序员吸引程序员&#xff0c;这也算猿粪吧&#xff0c;哈哈。 这个小调研也引发大家对程序员行业的激烈…

35岁是人生分水岭?一定要做这7件事

在网上看到这样的帖子&#xff0c;说的是35岁以上的员工&#xff0c;有人脉的卖保险&#xff0c;没人脉的跑滴滴&#xff0c;实在不行送外卖。招聘时&#xff0c;35岁以下优先。调整时&#xff0c;35岁以上优化。对绝大数人来说&#xff0c;35岁是一道坎&#xff0c;35岁是人生…