V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
liuzh365
V2EX  ›  JavaScript

jquery 前端有比较方便的预览修改 word 并导出的插件吗,能打包内网使用的

  •  
  •   liuzh365 · 2021-10-15 09:41:08 +08:00 via iPhone · 2005 次点击
    这是一个创建于 1133 天前的主题,其中的信息可能已经有所发展或是发生改变。

    接到一个需求,大概描述是这样:有一些 word 文件模板,比如是个会议纪要模板,文件的格式是固定的,但每次开会的时间、地点和参会人员等不一样。用户在模板文件里需要替换的地方预先设置好占位符,类似${x}、${title},在系统上传文件模板。需要用到这些模板的时候,用户在前端选择模板文件,后端发送到前端,前端的插件识别模板,以预览的形式打开,有占位符的地方可以修改,其他部分不能修改。点击保存可以导出文件。

    以前实习的时候看到过类似的,不过时间过去很久不记得了。。

    7 条回复    2021-10-15 16:39:31 +08:00
    InternetExplorer
        1
    InternetExplorer  
       2021-10-15 09:44:43 +08:00
    让后端去替换 :doge:
    lower
        2
    lower  
       2021-10-15 09:52:36 +08:00
    前端搞的话,好像只能用那种 IE 时代的 ActiveX 控件,调本地的 office 工具
    1cming
        3
    1cming  
       2021-10-15 11:39:03 +08:00
    正好之前做过类似的系统
    前端 jquery+angular
    主要解析转换逻辑在后端
    大致流程如下:
    - 1.占位符约定,正则解析
    占位符分两类:
    一类是通用的比如 inuput 、checkbox ;
    一类是业务需要关注的,用于单独解析,目的是给 input 赋予 name,表单提交到 server 时方便处理;
    - 2.模板文件
    原始输入的模板文件类型为 doc/xls 类型;
    通过 apose+jsoup 将模板转换成 html 文本;
    编辑时 html 文本匹配正则替换成页面元素
    比如$输入;转换成<input>;
    - 3.录入内容替换
    提交 form 单独处理;
    使用 apose+正则 replace 成<input value='录入内容'>
    - 4.html 转换成 word/pdf
    liuzh365
        4
    liuzh365  
    OP
       2021-10-15 12:13:24 +08:00 via iPhone
    @1cming 谢谢,跟我想到 planb 一样,改成用表单的方式实现
    liuzh365
        5
    liuzh365  
    OP
       2021-10-15 14:33:51 +08:00 via iPhone
    @1cming 第 2 点我不太清楚:是在后端转成 html 文本,然后将 html 文本传到前端吗?
    liuzh365
        6
    liuzh365  
    OP
       2021-10-15 14:35:41 +08:00 via iPhone
    @1cming 第 3 点替换完之后,是 json 把信息传到后端,还是整个 html 文本传到后端呢?
    1cming
        7
    1cming  
       2021-10-15 16:39:31 +08:00
    @liuzh365
    是的,原始输入是 word 或者 excel 模板,上传到后台后,server 解析生成 html 展示到页面,业务可以直接在 html 上填数,填完后提交到 server,然后由 server 把 form 数据(仅传 form 数据,空 html server 可以自己存一份)跟空 html 做匹配填充。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   970 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 20:55 · PVG 04:55 · LAX 12:55 · JFK 15:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.