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

国产化编辑器如何扩展KindEditor的Excel公式导入?

(推了推黑框眼镜,手指在键盘上噼里啪啦敲击)各位老铁,咱北京程序员又来唠嗑了!最近接了个CMS官网的活儿,客户爸爸要求在KindEditor里整点花活——要能直接把Word/Excel/PPT/PDF里的内容连锅端到编辑器里,连公式和形状都不能丢!这哪是需求啊,这分明是要让咱把Office全家桶塞进浏览器里啊!


前端骚操作(Vue3 + KindEditor插件)

// src/plugins/OfficeImporter.jsexportdefault{init(editor){editor.addButton('officeImport',{title:'一键导入Office文档',icon:'icon-office',onclick:()=>{constinput=document.createElement('input');input.type='file';input.accept='.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf';input.onchange=async(e)=>{constfile=e.target.files[0];if(!file)return;// 调用后端API处理文件constformData=newFormData();formData.append('file',file);try{constres=awaitfetch('/api/office/import',{method:'POST',body:formData});consthtml=awaitres.text();editor.insertHtml(html);// 插入处理后的HTML}catch(err){alert('导入失败:'+err.message);}};input.click();}});}};// main.js 注册插件importOfficeImporterfrom'./plugins/OfficeImporter';KindEditor.plugin('officeImport',OfficeImporter);

后端神操作(PHP处理Office转HTML)

// api/office/import.phpgetContent();}functionhandleExcel($filePath){$spreadsheet=SpreadsheetIO::load($filePath);$writer=new\PhpOffice\PhpSpreadsheet\Writer\Html($spreadsheet);return$writer->generateHtmlHeader(false).$writer->generateSheetData();}functionhandlePPT($filePath){$phpPresentation=PresentationIO::load($filePath);$html='';foreach($phpPresentation->getAllSlides()as$slide){$html.='';foreach($slide->getShapeCollection()as$shape){if(method_exists($shape,'getRichTextElements')){$html.=''.htmlspecialchars($shape->getRichTextElements()[0]->getText()).'';}}$html.='';}return$html;}functionuploadImagesToOSS($html,$tempDir){// 正则匹配所有img标签的srcpreg_match_all('/]+src="([^"]+)"[^>]*>/i',$html,$matches);foreach($matches[1]as$i=>$src){if(strpos($src,'data:image')===0){// 处理base64图片$imageData=substr($src,strpos($src,',')+1);$imageName=uniqid().'.png';$ossPath='uploads/'.date('Ymd').'/'.$imageName;$ossClient->putObject('your-bucket',$ossPath,base64_decode($imageData));$html=str_replace($src,'https://your-bucket.oss-cn-beijing.aliyuncs.com/'.$ossPath,$html);}elseif(file_exists($tempDir.'/'.basename($src))){// 处理本地临时文件$imageName=uniqid().'.'.pathinfo($src,PATHINFO_EXTENSION);$ossPath='uploads/'.date('Ymd').'/'.$imageName;$ossClient->putObject('your-bucket',$ossPath,file_get_contents($tempDir.'/'.basename($src)));$html=str_replace($src,'https://your-bucket.oss-cn-beijing.aliyuncs.com/'.$ossPath,$html);}}return$html;}// 主逻辑$tempDir=sys_get_temp_dir();$filePath=$tempDir.'/'.uniqid().'.'.pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION);move_uploaded_file($_FILES['file']['tmp_name'],$filePath);$html='';switch(pathinfo($_FILES['file']['name'],PATHINFO_EXTENSION)){case'doc':case'docx':$html=handleWord($filePath);break;case'xls':case'xlsx':$html=handleExcel($filePath);break;case'ppt':case'pptx':$html=handlePPT($filePath);break;case'pdf':// 这里可以用pdftotext或imagick处理PDF$html='PDF导入功能需额外配置';break;}// 处理图片上传到OSS$html=uploadImagesToOSS($html,$tempDir);// 清理临时文件unlink($filePath);echo$html;

数据库设计(就这?)

-- 根本不需要改表结构!-- 所有图片都存OSS,HTML直接塞进content字段ALTERTABLE`news`MODIFY`content`LONGTEXTCOMMENT'存储带Office样式的HTML';

群内赚钱秘籍(正经脸)

  1. QQ群:223813913新人进群领红包,推荐客户拿20%提成
  2. 代理机制:你负责拉客户,我负责写代码,分成自动到账
  3. 技术优势
    • 独家支持MathType/Latex公式转MathML
    • 完美解析emz/wmz矢量图
    • 公众号内容一键搬运
  4. 成本计算
    • 开发成本:0元(开源组件拼装)
    • 服务器成本:阿里云ECS + OSS(客户自付)
    • 你的时间成本:复制粘贴这段代码的时间

(突然正经)说真的,这需求我调研了两周,发现市面上要么贵得离谱,要么功能阉割。咱们这个方案:

  • 前端:Vue3 + KindEditor插件(1天搞定)
  • 后端:PHPOffice全家桶(3天搞定)
  • 部署:宝塔面板一键安装(半天搞定)

最关键的是——客户根本分不清你是自己开发的还是集成的!所以兄弟们,赶紧加群,这波红利能吃三年!

(突然弹出消息提示)“您有新的代理注册申请,预计提成:¥420.00” 哎,写代码哪有收提成香啊~

上传工具栏插件文件夹

上传插件文件夹

控件初始化

在head中引入组件文件
注意,不要重复引入jquery,如果您的页面已经引入了jquery这里就不要再引入jquery 1.4了。

WordPaster For KindEditor-4.x # 初始化组件 WordPaster.getInstance({ui:{render:"wdpst"}//目标容器,一般为div});

设置快捷键

将插件添加到工具栏,并挂载KindEditor的Ctrl+V快捷键事件

注意

1.如果接口字段名称不是file,请配置FileFieldName。

点击查看教程
2.如果接口返回JSON,请配置ImageMatch

点击查看教程

3.如果接口返回的图片地址没有域名,请配置ImageUrl

点击查看教程

整合效果

效果

编辑器界面

导入Word文档,支持doc,docx

导入Excel文档,支持xls,xlsx

粘贴Word

一键粘贴Word内容,自动上传Word中的图片,保留文字样式。

Word转图片

一键导入Word文件,并将Word文件转换成图片上传到服务器中。

导入PDF

一键导入PDF文件,并将PDF转换成图片上传到服务器中。

导入PPT

一键导入PPT文件,并将PPT转换成图片上传到服务器中。

上传网络图片

示例下载

下载完整示例

http://www.jsqmd.com/news/491872/

相关文章:

  • 将文本转化为向量化表示
  • ansys apdl 车轨耦合车桥耦合 列车模型:考虑车体、转向架、车轮质量和二系悬挂 钢轨
  • 计算机毕业设计springboot高校学生党员信息管理系统 基于SpringBoot的高校党建信息化管理平台 基于SpringBoot的智慧校园党员服务系统
  • 全志H618
  • ceph提供rbd存储
  • 飞函私有化,安全重塑跨部门协作
  • 建议收藏|2026知网新规下如何降AI?国内外5款降低AIGC率工具实测(含免费降AI教程) - 殷念写论文
  • Unity Shader 实战:从零掌握 PBR 基于物理的渲染
  • django基于大数据技术的医疗数据分析与研究
  • CoPaw网页爬虫skill技能及定时任务管理
  • Linux 命令之 uname 详解(查看系统信息)
  • Python全栈入门到实战【基础篇 23】函数式编程:高阶函数与匿名函数
  • 中断很难?看完这篇就懂了
  • Claude code安装/CC switch安装
  • 伟伦定制工厂店
  • 医疗HIS系统Java如何通过控件优化病历图片文件夹的浏览器端分片加密断传?
  • 315严选好锅:京尚纯陶瓷锅具,健康看得见
  • 基于Spring Boot的高校二手市场交易系统设计与实现vue3
  • 2026大专财富管理毕业生面临的岗位饱和问题及数据分析技能的应对策略
  • COMSOL太赫兹超表面BIC与能带折叠
  • 57.状态机的几种实现方式
  • sqlmap 魔改研究 —— 从流量特征到 WAF 对抗
  • 这个PSO优化BP神经网络的骚操作有点东西啊!咱们今天不整那些虚头巴脑的理论推导,直接手撕代码看看这玩意儿到底怎么玩的
  • 【认识-掌握】Elasticsearch的用法
  • 2026江苏装修装饰/整装/家装/全包装修装饰二手房装修公司实力公司推荐 - 2026年企业推荐榜
  • RocketMQ 高频面试题
  • 2026年打造品牌AI标签,用触有数据提炼“高效、可靠、性价比”印象!
  • 2026年上海松江泗泾学画TOP5机构,哪家才是靠谱之选?
  • Activiti7(流程变量+网关)
  • 程序员生存图鉴2026:技术深耕、职业破局与可持续发展