新闻详情

新闻详情

首页 / 资讯中心 / 详情

WPS接入DeepSeek完整教程:本地Python中转+VBA宏实现AI办公自动化

发布时间:2026/10/2 7:52:36来源:尧图网络
WPS接入DeepSeek完整教程:本地Python中转+VBA宏实现AI办公自动化
这两年在办公软件里折腾AI工具的人越来越多。WPS这个国民级办公软件虽然已经内置了AI功能但真落到具体工作上尤其是批量处理、自定义提示词、对接自己常用的大模型时总有一种使不上劲的感觉。我自己办公日常几乎离不开WPS今年年初开始尝试把DeepSeek接入WPS实现AI辅助写作、自动生成表格公式、一键润色长文这些功能用了两三个月体验相当能打。这篇内容就把整个接入思路、代码实现、踩坑记录完整分享出来适合那些不想被办公软件内置AI绑定、又想真正把大模型用起来的朋友。1. 为什么要自己动手WPS加AI的方案选型1.1 现状WPS内置AI与第三方插件的局限先说一个很多人问过我的问题WPS自带AI不香吗为什么非要自己接DeepSeekWPS AI确实做得不错界面友好、操作直观日常写个邮件、生成摘要、做表格分析都够用。但它有几个绕不开的局限。第一是模型不可选。WPS AI背后绑定的模型是固定的你没法指定使用DeepSeek的某一版模型也没法调整temperature、max_tokens、top_p这些影响生成质量的参数。偶尔遇到模型输出过于保守或者不够贴合业务场景时你只能干瞪眼。第二是批处理能力弱。如果你想把一份几百行的销售明细表逐条生成摘要或者把一个文件夹里的所有docx文档批量润色内置AI帮不了你。它更像一个单次问答工具不是可编程的接口。第三是自定义指令受限。企业内部有固定的文案模板、术语规范、审批口径你想让AI严格按这个框架输出内置AI不太容易配置。你只能每次在对话框里把要求重新打一遍。再加上一些第三方WPS AI插件要么收费不便宜要么把数据传到不确定的服务器要么功能单一、更新不及时。综合比较下来自己接DeepSeek反而是一条更可控、更省钱、也更灵活的路。1.2 自研思路本地中转加API调用的架构那自己接是不是要写很复杂的代码其实不需要。我采用的方案是一条非常经典的轻量架构WPS宏按钮 本地Python中转服务 DeepSeek API。简单来说就是在你电脑上跑一个Python脚本这个脚本监听本地一个端口。WPS里的表格或文档通过VBA宏把要处理的内容发送到本地端口Python收到之后调用DeepSeek的开放接口拿回AI生成结果再返回给WPS显示。整个过程都在本机完成数据走的是本机回环地址不经过第三方中转服务器。选这个架构有几个原因。一是WPS的VBA环境不直接支持HTTPS请求。VBA里虽然有WinHttpRequest和XMLHTTP这些对象但对接外部API时经常遇到证书校验、TLS版本、中文编码一堆问题调试成本很高。而Python对这些事情的封装非常成熟几行代码就能搞定。二是方便换模型。今天接DeepSeek明天想试试其他兼容OpenAI接口的模型只需要改一下Python服务里的模型名称和密钥WPS这边一行代码都不用动。三是逻辑隔离。复杂的提示词构造、返回内容清洗、错误重试全部放在Python里VBA只负责把文本丢进去、把结果取回来层次清晰出了bug也好排查。1.3 能力边界能做什么、不能做什么动手之前先把这个方案的能力边界摸清楚免得期望值不对。能做的事情非常多表格里自动生成公式、批量翻译、长文润色、合同摘要、会议纪要整理、数据洞察分析……只要你能把内容转成文字喂给DeepSeek它就能回给你一段可用的结果。不能做的事情也要说清楚。WPS本身是图形化软件VBA宏没办法直接操控一个不存在的AI按钮所以所有交互还是得通过自定义宏界面或者单元格触发。像那种在WPS编辑器里划词悬浮、实时AI续写的丝滑体验这个方案做不到至少我目前没做到那么完美。另外如果WPS中的文档带复杂格式比如多级目录、大量图片、文本框纯文本方式把内容提取出来就会损失格式AI处理后再写回也会丢失排版。所以这个方案更适合处理文本密集型任务不适合做精细的版面控制。2. 动手前的准备工作2.1 申请DeepSeek API密钥第一步去DeepSeek的开放平台注册账号。目前注册流程很简单手机号验证就能用。登录后进入控制台找到API密钥管理创建一个新的API密钥复制保存。格式一般是以sk-开头的一串字符。这里有三件事必须提醒密钥创建后只完整展示一次之后无法再查看一定先存到本地密码管理器或者临时存到一个文本文件里。我自己第一次就没保存好第二天重新生成了一次。使用API接口是按token计费的DeepSeek的定价在同类模型里算很便宜的但新账号余额通常是0。你需要先去充值页充一点钱最低额度十几块钱日常测试和轻量办公用一个月没问题。不建议大量充值先用小额验证一下使用频率再决定。API密钥不要提交到任何公开代码仓库不要发给任何人更不要写死在前端页面里。因为拿到密钥就等于有了你账户的调用额度会被刷爆余额。2.2 准备Python环境与依赖库Python版本建议3.9或以上。如果没有装建议去官网下载安装包安装时勾选“Add Python to PATH”这样命令行里直接就能用python命令。再装一个requests库用来发HTTP请求。打开命令行窗口输入pip install requests新版Python自带venv可以考虑给这个项目单独建一个虚拟环境避免污染全局环境。命令行里依次执行python -m venv deepseek_wps deepseek_wps\Scripts\activate pip install requestsWindows系统下激活虚拟环境注意路径是Scripts不是bin这是个容易踩的小坑。2.3 WPS宏环境的准备WPS个人版默认不带VBA宏功能需要单独装VBA for WPS插件。这一步也是很多朋友卡住的地方。装好之后打开WPS表格按AltF11应该能进入VBA编辑器。如果按键没反应看一下功能区的“开发工具”选项卡是否显示。默认情况下这个选项卡是隐藏的需要到文件-选项-自定义功能区里把它勾选出来。还要确认一件事WPS是否会执行你的宏。打开“开发工具”选项卡找到“宏安全性”把宏安全性设置为“启用所有宏”否则你写好的代码一运行就会提示禁止执行。这个设置在公共电脑上建议改回禁用只在自己电脑上开启。2.4 整体文件清单整个项目只需要三个文件deepseek_server.pyPython中转服务的主脚本batch_process.py可选用于批量处理文本文件一个WPS表格文件比如AI助手.xlsm里面放VBA宏代码后面两个章节分别讲这三个文件怎么落地。3. 核心实现本地中转服务3.1 为什么需要中转服务这一步是整个方案的地基。刚才说过VBA直接调DeepSeek API有各种坑中转服务就是把这些坑全部填平。它的工作逻辑是WPS里的VBA发送一段文本到http://127.0.0.1:8765/generatePython服务接收到文本后把它拼到一个预制的提示词模板里调用DeepSeek的官方接口获取结果最后把干净的结果文本返回给WPS。这里选择端口8765没有特殊原因就是一个普通高位端口避开常见的8080、3000之类被其他软件占用的端口。如果你本机有其他服务占用改一个数字就行同时VBA里的地址也要同步改。3.2 编写Python中转接口创建一个deepseek_server.py文件内容如下# -*- coding: utf-8 -*- import json import requests from http.server import BaseHTTPRequestHandler, HTTPServer DEEPSEEK_API_KEY sk-你的密钥 DEEPSEEK_API_URL https://api.deepseek.com/v1/chat/completions class DeepSeekHandler(BaseHTTPRequestHandler): def do_POST(self): if self.path /generate: content_length int(self.headers.get(Content-Length, 0)) raw_body self.rfile.read(content_length).decode(utf-8) req_data json.loads(raw_body) prompt req_data.get(prompt, ) system_prompt req_data.get(system, 你是一个专业的文字助手。) result_text self.call_deepseek(system_prompt, prompt) # 返回纯文本方便VBA直接读取 self.send_response(200) self.send_header(Content-Type, text/plain; charsetutf-8) self.send_header(Access-Control-Allow-Origin, *) self.end_headers() self.wfile.write(result_text.encode(utf-8)) else: self.send_response(404) self.end_headers() def call_deepseek(self, system_prompt, user_prompt): headers { Authorization: fBearer {DEEPSEEK_API_KEY}, Content-Type: application/json } payload { model: deepseek-chat, messages: [ {role: system, content: system_prompt}, {role: user, content: user_prompt} ], temperature: 0.7, max_tokens: 2048, stream: False } resp requests.post(DEEPSEEK_API_URL, headersheaders, jsonpayload, timeout60) data resp.json() return data[choices][0][message][content].strip() def run_server(): server HTTPServer((127.0.0.1, 8765), DeepSeekHandler) print(DeepSeek本地中转服务已启动端口8765) server.serve_forever() if __name__ __main__: run_server()这段代码的核心就两个函数。run_server启动一个HTTP服务call_deepseek封装了对DeepSeek接口的调用。需要注意几点timeout设置成60秒给大模型留足生成时间。如果设太短长文本生成一半连接就断了。temperature0.7是一个比较通用的配置兼顾创造性和准确性。如果你需要事实性很强的输出比如提取关键词、判断分类建议把它降到0.2如果写文案、头脑风暴可以调到0.9。max_tokens2048意味着单次最多返回约两千个token也就是大概一两千个汉字。处理长文章时建议分批喂给模型而不是一次性全塞进去。3.3 参数选择背后的逻辑这里详细说一下几个参数的坑这是常规文档不会写细的。temperature是控制随机性的核心参数。数值越高模型的输出越发散、有创意数值越低输出越保守、稳定。很多人刚上手时喜欢把它设成0觉得这样最可靠。实际测试下来temperature为0时模型偶尔会进入重复循环尤其是生成列表类内容时可能出现同一句话反复说的情况。0.7这个值是我在“稳定”和“自然”之间找到的平衡点日常办公场景大多适用。max_tokens这个参数很容易被忽略但它直接决定你的输出长度上限。比如你要AI帮你写一封200字的邮件但max_tokens只有100它写到一半就断了。反过来如果设太大遇到异常情况模型可能疯狂输出没完没了白白消耗你的token余额。建议先设2048等摸清常见任务的输出量级后再按需调整。还建议在call_deepseek函数里加一层异常捕获。比如网络超时、API返回错误码、返回内容为空都要有对应的兜底逻辑。实际使用中我最常遇到的是余额不足和网络抖动两种情况返回的报错信息完全不同不加捕获的话VBA那边只看到一堆乱码排查起来很懵。3.4 启动与验证运行Python服务python deepseek_server.py看到“服务已启动”的提示后在浏览器访问http://127.0.0.1:8765/generate因为只实现了POST方法浏览器直接访问会看到404这是正常的。用命令行验证一下curl -X POST http://127.0.0.1:8765/generate -H Content-Type: application/json -d {\system\: \你是一个专业的表格公式助手。\, \prompt\: \请用Excel公式返回A1到A10中大于100的数字个数\}如果一切正常终端会返回AI生成的一段文本说明中转服务已经通了。4. 在WPS中调用AIVBA插件开发4.1 添加VBA模块与界面服务端通了现在轮到WPS这一侧。打开WPS表格按AltF11进入VBA编辑器在左侧工程资源管理器里右键插入一个模块命名为DeepSeekHelper。在这个模块里粘贴下面的代码Public Function CallDeepSeek(prompt As String, Optional systemMsg As String 你是一个专业的文字助手。) As String Dim http As Object Dim apiUrl As String Dim requestBody As String Dim response As String apiUrl http://127.0.0.1:8765/generate requestBody {system: Replace(systemMsg, , \) , _ prompt: Replace(prompt, , \) } Set http CreateObject(MSXML2.XMLHTTP) http.Open POST, apiUrl, False http.setRequestHeader Content-Type, application/json http.send requestBody response http.responseText CallDeepSeek response End Function代码的逻辑很简单把传入的文本拼成JSON字符串发给本地服务等结果返回。这里有一个非常关键的处理就是转义。因为JSON字符串中的双引号会被VBA识别为字符串结束符所以发送前必须用Replace把用户输入的英文双引号替换成\。否则遇到文本里带引号的内容JSON解析直接报错返回空值。这个我一开始没做测试带引号的中文内容时直接崩了。4.2 在单元格中直接调用AI写个简单示例。假设A1单元格有一句话你想让AI帮忙润色成更正式的书面语。在B1单元格输入公式CallDeepSeek(A1 请润色成正式的书面表达保持原意。)回车后如果你本地Python服务还在运行一两秒内B1就会返回润色后的文本。这个用法把AI能力变成了一个普通函数你可以像使用SUM、VLOOKUP一样组合它。举例来说如果你想批量处理A2到A20这19个单元格无需写循环在B2输入CallDeepSeek(A2 请润色成书面表达。)下拉填充到B20每个单元格都会独立调用一次AI接口。整个过程完全复用Excel的填充机制不需要写任何字符串拼接代码。4.3 进阶用ActiveSheet实现选中区域处理如果你想让AI处理选中的一片区域比如批量把A列的公司名称整理成统一的格式可以再写一个子程序Public Sub ProcessSelectedRange() Dim selectedRange As Range Dim cell As Range Dim resultCell As Range Dim promptText As String Set selectedRange Selection Set resultCell selectedRange.Offset(0, 1).Cells(1, 1) For Each cell In selectedRange.Cells promptText 请把【 cell.Value 】转换为标准的公司全称格式只返回转换结果不要解释。 resultCell.Value CallDeepSeek(promptText) Set resultCell resultCell.Offset(1, 0) Next cell End Sub把这段代码放到模块里然后回到WPS界面按AltF8选择ProcessSelectedRange点击运行。效果是选中A列若干公司名B列对应位置自动生成整理后的结果。因为用了Offset(0,1)结果默认输出到选中区域的右边一列不会覆盖原数据。想输出到其他区域改Offset的参数就行。4.4 给WPS加一个自定义按钮每次用AltF8运行宏还是太麻烦。我习惯把常用功能放到功能区点一下就能跑。在WPS表格里右键功能区选择“自定义功能区”新建一个组命名为“AI助手”。然后添加一个按钮命令指向ProcessSelectedRange这个宏。以后选中数据点一下按钮结果就自动生成在旁边体验感会好很多。有一点需要留意WPS的自定义按钮在不同的安装版本里兼容性不一样有的版本需要先保存工作簿为启用宏的格式按钮引用才会生效。建议统一保存成.xlsm后缀。5. 常见问题与排查技巧实录5.1 API请求失败或返回乱码这个是最常见的问题。先从源头查起。第一步看Python服务窗口有没有报错。如果显示Traceback相关字样说明Python调用大模型接口出了问题。常见原因是API密钥填错、余额不足、网络异常。打开终端直接运行一个最简单的测试curl https://api.deepseek.com/v1/chat/completions -H Authorization: Bearer sk-你的密钥 -H Content-Type: application/json -d {\model\:\deepseek-chat\,\messages\:[{\role\:\user\,\content\:\你好\}]}如果这里报401是密钥问题如果报余额不足充值解决如果是超时检查网络。第二步如果curl通但WPS返回乱码说明是VBA解析环节的问题。检查Python服务返回时的编码设置确认send_header(Content-Type, text/plain; charsetutf-8)这行代码在。再看VBA里http.responseText的解析逻辑如果中文字符全变成问号大概率是编码不一致导致的。一个变通方案是修改Python服务让它直接返回JSON格式然后在VBA里用JSON解析器提取但这会增加不少代码量我采用的最实用办法是保证所有环节都用UTF-8。5.2 超时设置处理大量文本时AI生成时间会比较长。如果VBA那边等待时间默认较短函数可能直接返回空值。解决方法是给VBA的XMLHTTP设置超时http.setTimeouts 5000, 5000, 5000, 120000最后一位数字是接收超时单位是毫秒120000代表120秒。这个值根据你的任务复杂度灵活调整。如果你经常处理几千字的长文建议设到180000以上。5.3 提示词中的引号与换行符处理这个问题之前提过凡是拼JSON串的地方一定要注意转义。WPS单元格里的文本如果包含换行符发送到Python后也可能导致JSON解析失败。我的做法是把换行符统一替换为空格prompt Replace(prompt, vbCrLf, ) prompt Replace(prompt, vbLf, )Python那一侧同样做一层清理把请求体里的\r和\n转换成\\n双保险。5.4 并发与请求频率问题WPS下拉公式批量填充时会瞬间发起大量请求。如果一次填20行就是20个并发请求打到Python服务上。而Python的HTTPServer默认是单线程的同一时间只能处理一个请求其他请求会排队。如果是简单短文本问题不大最长等待也就是最后一个请求的处理时间。但如果文本复杂度高排队的请求可能会等待太久。改进方案有几种最简单的是用ThreadingHTTPServer替换HTTPServerPython标准库自带直接把主脚本的server替换一下就行。另外可以在代码里加一个限制最大并发数的信号量防止把API调用额度刷爆。5.5 数据隐私与安全这一点是我用了两周之后才开始重视的。WPS里处理的文档往往含公司内部信息、客户资料、个人隐私。这个方案会把文本通过本地中转服务发给DeepSeek的API数据会离开你电脑。如果你的数据对保密性有硬性要求建议先咨询公司信息安全负责人。退一步说即使是个人使用也建议不要在系统提示词里加任何敏感信息。我在自己的项目里专门设计了一个白名单机制某些特定关键词出现时Python服务直接返回“该内容不在AI处理范围内”根本不发起API调用。这样即使有人误操作也不会把敏感信息发给外部接口。6. 从能用到好用几个值得深挖的方向6.1 批量处理整个文件夹的文档当你在WPS里手动选中单元格时处理一条、几条没问题但真遇到几百条数据还是建议交给脚本去跑。写一个独立的Python脚本遍历指定文件夹下所有docx文档提取正文逐篇调用DeepSeek生成摘要最后把摘要统一写回一个表格文件。这个过程完全不依赖WPS的界面处理完再来WPS里看结果会更高效。前提是docx解析需要安装python-docx库pip install python-docx这个扩展是我个人非常推荐的方向。它把WPS的交互能力和Python的批量处理能力结合到一起形成了“WPS负责微小交互Python负责批量流水线”的配合模式。6.2 在表格里做数据解读和洞察DeepSeek在表格场景中最被低估的能力是“数据洞察”。把一段CSV样式的表格数据粘贴到单元格里用系统提示词让它分析趋势、标注异常值、给出业务建议返回结果往往比内置图表生成还直观。比如把某一列销售数据发给AI系统提示词设置成“你是一个高级数据分析师请分析数据中的周期性规律、异常点并给出可操作的改进建议用要点式回复。”实测下来给出的分析维度和表达方式比大多数模板化报表要有价值能够辅助更深入的数据挖掘。6.3 构造你自己的指令库用上一段时间后你会发现每次都在WPS里手动输入“请润色”、“请翻译”、“请总结”这种提示词太啰嗦。更聪明的做法是在Python服务里加一个preset参数把常用指令做成模板。比如在WPS里只需要传presetpolishPython服务自动把系统提示词替换为你预设的完整指令相当于给AI预置了人格和输出格式。这样VBA侧的函数调用会非常干净几乎不用改提示词。这个指令库可以沉淀成JSON文件备份、同步、分享都很方便。我自己的指令库里大概存了二十几个模板涵盖邮件、周报、会议纪要、翻译、代码注释等高频场景日常办公效率提升非常明显。6.4 扩展到WPS文字和演示你可能会问这个方案能不能用在WPS文字Writer里完全可以逻辑一模一样。在WPS文字里写宏调用CallDeepSeek函数把写好的段落内容发给AI再把返回结果插入光标位置效果就像是给WPS文字装了一个外置的AI写作助手。我在使用中发现一个非常实用的场景写长文档时的“中途续写”。当你思路断了先把已经写的部分选中运行宏AI结合上下文续写接下来的两三段然后你再手动微调。这种方式比直接在对话框里问AI写段落好用得多因为AI能看到你当前的写作风格和内容进度延续性更强。7. 最后再分享一点个人的使用体会整套方案跑起来后我最大的感受是AI接入办公软件不一定非要等厂商开发内置功能自己动手也完全可以拿到一个顺手、可控、可扩展的版本。从设计上这个方案把“通用大模型”和“具体办公场景”做了比较彻底的解耦。Python服务负责和模型打交道WPS只负责展示和交互。哪天DeepSeek出了更强的新模型改一行配置就能切换哪天你不想用DeepSeek了只要目标模型兼容OpenAI接口格式改一行请求路径就够了。从习惯养成上我建议刚上手的朋友不要贪多先围绕一个最常做的事情打通全流程。比如就做“AI辅助生成表格公式”每天用到这个功能顺手了再逐步增加润色、翻译、摘要等能力。一次铺太多指令模板反而容易在效果不理想时打击继续使用的信心。整个流程走一遍你会发现真正难的部分并不是代码而是你要想清楚自己的日常工作里哪些环节是在“生成文本”哪些是在“计算数据”。AI能帮上的是那些“生成文本”的环节比如写一封邮件、总结一份材料、换一个表述、规划一段内容。把这些环节识别出来接入这套设备日常办公体验会有肉眼可见的提升。希望这篇内容能给你一个足够清晰的起点。提示以上所有代码只用于学习与个人办公场景的轻量自动化。如果你在公司环境中使用务必将数据安全与合规问题放在第一位和负责信息安全的人确认好数据边界再部署。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PT100三线制测温电路设计与LTspice仿真:消除导线电阻误差 2026/10/2 8:34:55

PT100三线制测温电路设计与LTspice仿真:消除导线电阻误差

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
基于LSTM+Attention的本地化聊天机器人毕设方案 2026/10/2 8:34:55

基于LSTM+Attention的本地化聊天机器人毕设方案

简介:本资源是一套面向本科毕业设计与课程设计的Python深度学习聊天机器人完整实现方案,适用于计算机、人工智能相关专业学生开展毕设开发或项目实践。项目基于Django框架构建Web前后端,集成深度学习模型(如Seq2Seq或Transformer变…

阅读更多 →
VOC格式人脸表情数据集:8279张图+YOLO转换全流程 2026/10/2 8:34:48

VOC格式人脸表情数据集:8279张图+YOLO转换全流程

简介:本资源是面向计算机视觉初学者与深度学习实践者的VOC格式人脸表情识别目标检测数据集,专为YOLO等主流检测模型训练设计。数据集涵盖8种基础情绪类别(fear、sad、surprised、contempt、anger、neutral、disgust、happy)&#…

阅读更多 →
电影在线观看系统Java毕设:SSM+JSP+Layui全流程开发实战 2026/10/2 8:34:48

电影在线观看系统Java毕设:SSM+JSP+Layui全流程开发实战

简介:资源为基于 Java SSM 体系开发的电影在线观看系统完整项目,适合正在学习 SSM 整合、JSP 前端交互及 Maven 项目构建的 Java 初学者,也便于课程设计或毕业设计参考。项目采用 JSP Spring SpringMVC MyBatis Layui 技术栈,…

阅读更多 →
牦牛行为识别数据集实战:YOLO与VOC双格式转换及训练避坑指南 2026/10/2 8:34:48

牦牛行为识别数据集实战:YOLO与VOC双格式转换及训练避坑指南

简介:这份数据集面向目标检测与畜牧业视觉应用,提供草原耗牛8种行为类别的标注图像,覆盖吃草、打架、站立、躺卧、交配、移动等动作,且包含牛体本身目标类别,适合作为YOLO、Faster R-CNN等模型的训练与评测数据。压缩包…

阅读更多 →
CVI串口通信可靠性实战:FIFO控制与超时策略 2026/10/2 8:34:48

CVI串口通信可靠性实战:FIFO控制与超时策略

简介:这是一套基于LabWindows/CVI开发的轻量级串口调试工具资源包,面向工业自动化、测试测量领域的嵌入式工程师与高校实验开发者,解决CVI环境下串口通信调试难、FIFO配置不直观、数据收发缺乏可视化等问题。资源共27个文件,包含2…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉