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

KindEditor导入excel表格数据保留格式到OA系统

震惊!程序员接单竟发现致富新大陆?!

大家好,我是北京某不知名.NET程序员小王。最近接了个CMS企业官网项目,客户说要加个Word一键粘贴功能,要求还挺多:

  • 要支持Office全家桶导入
  • 公式转换要高级(LaTeX→MathML)
  • 还得兼容高龄用户(老板的爸爸要用)
  • 预算680块(老板说这是友情价)

技术选型血泪史

本来想直接用KindEditor的,结果发现:

  1. 公式支持:emz/wmz格式直接GG
  2. 样式保留:复制粘贴后直接变抽象画
  3. 微信公众号内容:粘贴后图片全变404

我试了市面上所有开源方案:

  • CKEditor:公式插件收费
  • TinyMCE:导入功能像抽奖
  • WangEditor:对高龄用户太不友好

终极解决方案

最后我决定自己撸一个插件!下面是核心代码:

前端部分 (Vue3)

// Word粘贴魔法插件constwordPastePlugin={install(editor){editor.addButton('word_paste',{title:'Word一键粘贴',icon:'word',click:asyncfunction(){constclipboardItems=awaitnavigator.clipboard.read();for(constclipboardItemofclipboardItems){for(consttypeofclipboardItem.types){if(type==='text/html'){constblob=awaitclipboardItem.getType(type);lethtml=awaitblob.text();// 魔法转换开始html=awaittransformOfficeContent(html);// 插入编辑器editor.insertHtml(html);}}}}});}}// 注册插件KindEditor.use(wordPastePlugin);

后端部分 (C#)

// Office文档转换器publicclassOfficeConverter{publicasyncTaskConvertWordToHtml(IFormFilefile){// 用Aspose.Words搞事情(虽然买不起正版)vardoc=newDocument(file.OpenReadStream());// 处理数学公式foreach(Shapeshapeindoc.GetChildNodes(NodeType.Shape,true)){if(shape.OleFormat!=null&&shape.OleFormat.ProgId=="Equation.3"){varlatex=ExtractLatexFromOle(shape);varmathML=LatexToMathML(latex);shape.Remove();// 插入MathML到文档...}}// 保存为HTMLusingvarstream=newMemoryStream();doc.Save(stream,SaveFormat.Html);returnEncoding.UTF8.GetString(stream.ToArray());}// 其他格式转换方法类似...}

致富秘籍大公开

说到这个QQ群223813913,我必须得说:

  • 新人红包:1-99元随机(我抢到过2毛)
  • 会员升级:从青铜到王者(跟打游戏似的)
  • 提成比例:20%起跳(最高50%!)

数学题时间:

1单1万 × 50% = 5000元 10单 = 5万元 年入百万不是梦!

(注意:以上收入数据未经考证,可能包含夸张成分)

真实项目建议

正经的说,要实现这个需求:

  1. 商业方案:推荐购买Aspose.Total(预算可能要加个0)
  2. 开源方案:PDF用PDF.js,公式用MathJax
  3. 混合方案:Word用mammoth.js,公式单独处理

最终我给客户的报价是:

  • 基础功能:680元(只能复制文字)
  • 完整功能:6800元(含公式转换)
  • VIP尊享:68000元(送程序员上门服务)

客户选了…第一个选项😂


想一起讨论(或者一起做梦赚钱)的欢迎加群:223813913
(群里真有红包,虽然不大,但比老板给的预算大方)

上传工具栏插件文件夹

上传插件文件夹

控件初始化

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

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

设置快捷键

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

vareditor;KindEditor.ready(function(K){editor=K.create('#content1',{items:['wordpaster','importwordtoimg','netpaster','wordimport','excelimport','pptimport','pdfimport','|','importword','exportword','importpdf','|'],afterCreate:function(){WordPaster.getInstance().SetEditor(this);varself=this;//自定义 Ctrl + V 事件。KindEditor.ctrl(self.edit.doc,'V',function(){WordPaster.getInstance().Paste();});}});});

注意

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.cnnetsun.cn/news/140546.html

相关文章:

  • Vue-cli如何集成WebUploader完成百万文件分块上传?
  • HTML如何设计JQuery支持大文件上传的暂停与继续功能?
  • 35岁程序员失业,只能开滴滴?这五个大模型高价值转型方向,让你身价翻倍!
  • CSS margin(外边距)
  • 【计算机毕业设计案例】基于java+springboot+vue的流浪动物救助领养微信小程序基于springboot+微信小程序的宠物领养系统小程序(程序+文档+讲解+定制)
  • 宿主机net.ipv4.ip_forward设置 0 Docker网络直接“罢工”!
  • 【计算机毕业设计案例】基于SpringBoot的图书销售商城微信小程序基于springboot的华兴书城微信小程序(程序+文档+讲解+定制)
  • 【计算机毕业设计案例】基于springboot+Android的研学旅行服务平台APP小程序设计基于微信小程序的研学旅游服务小程序系统(程序+文档+讲解+定制)
  • python_django农业生产环境下的土壤与气候监控数据处理系统 可视化999i002k
  • python_django基于web平台的社区医疗服务平台_nk5a3uy7
  • 容错不是选修课,而是生死线:工业控制Agent必须具备的4项容错能力
  • python_django基于大数据技术旅游景点数据分析推荐系统现_wrqk1aes
  • 基于安卓的健身记录APP
  • 测试方法创新:从自动化到智能化的转型之路‌
  • 基于多智能体深度强化学习的车联网通信资源分配优化探索
  • 小程序毕设项目推荐-基于微信小程序的学生宿舍管理系统基于springboot+微信小程序的高校学生公寓道闸管理平台的设计与实现【附源码+文档,调试定制服务】
  • 小程序毕设项目推荐-基于springboot+vue的微信小程序的快递代取系统的设计与实现基于springboot+微信小程序的快递代取系统的设计与实小程序【附源码+文档,调试定制服务】
  • 小程序毕设项目推荐-基于微信小程序的宠物服务系统基于springboot+微信小程序的宠物服务系统小程序【附源码+文档,调试定制服务】
  • 给AI装上“海马体”:三层类人记忆架构如何让多Agent系统真正懂你
  • 影刀RPA黑科技:自动分析Zozone用户消费行为,精准营销一键搞定![特殊字符]
  • 【教育 AI 突破性进展】:3个真实案例揭示学情分析如何提升教学效率40%+
  • 通达信成交额优化公式指标
  • 数字电路高阶部分<1>数字电路里的“找不同”:隐含表到底藏着什么玄机?
  • Java开发必备:Maven集成IDEA详细教程
  • 喜报!凯云成为北京软件和信息服务业协会第十一届理事会会员单位,并荣获“双软认证”
  • 昨晚被消消乐广告气到,回家我直接用 AI 复刻了“究极进化版”俄罗斯方块!
  • 首创ACE具身研发范式,大晓机器人构建具身智能开放新生态
  • 41、Linux多核处理器性能优化与调试指南(上)
  • 44、深入探索GDB调试:数据检查、函数调用与模板调试技巧
  • WebDriver+Selenium实现浏览器自动化