xhEditor导入excel数据到信创系统

(扶了扶眼镜,敲着机械键盘开始码字)各位老板,作为山西前端界的一股泥石流,今天给大家表演个"如何在680元预算内实现文档自由"的绝活!

先甩个前端Vue3插件包(附赠React版兼容补丁):

// XhEditorPlugin.js
export default {
  install(app) {
    const initXhEditor = (editor) => {
      // 添加文档导入按钮
      editor.addButton('docImport', {
        title: '文档导入',
        icon: '📎',
        onclick: () => {
          const input = document.createElement('input')
          input.type = 'file'
          input.accept = '.docx,.xlsx,.pptx,.pdf'
          input.onchange = async (e) => {
            const file = e.target.files[0]
            const formData = new FormData()
            formData.append('doc', file)
            
            // 调用后端解析接口
            const res = await axios.post('/api/doc-parse', formData)
            
            // 插入处理后的HTML
            editor.insertHTML(res.data.content)
            
            // 自动上传图片到服务器
            res.data.images.forEach(img => {
              const form = new FormData()
              form.append('image', img.blob)
              axios.post('/api/upload', form).then(r => {
                editor.insertHTML(``)
              })
            })
          }
          input.click()
        }
      })

      // 监听Word粘贴事件
      editor.on('paste', (e) => {
        const items = (e.clipboardData || e.originalEvent.clipboardData).items
        for (let item of items) {
          if (item.type.startsWith('image/')) {
            const blob = item.getAsFile()
            const form = new FormData()
            form.append('image', blob)
            axios.post('/api/upload', form).then(r => {
              editor.insertHTML(``)
            })
          }
        }
      })
    }

    app.config.globalProperties.$xhEditor = { init: initXhEditor }
  }
}

后端C#版(ASP.NET Core版):

[ApiController]
[Route("api/doc-parse")]
public class DocParseController : ControllerBase
{
    [HttpPost]
    public async Task ParseDocument(IFormFile doc)
    {
        // 文档解析核心代码(开源库组合拳)
        var result = new DocumentParser().Parse(doc.OpenReadStream(), doc.FileName);
        
        // 处理公式转换
        result.Content = Regex.Replace(result.Content, @"(\$\$.+?\$\$)", m => {
            var latex = m.Value.Replace("$$", "");
            return $"{LatexToMathML(latex)}";
        });

        // 返回处理后的内容
        return Ok(new {
            content = result.Content,
            images = result.Images.Select(img => new {
                name = img.FileName,
                url = $"/uploads/{Guid.NewGuid()}{Path.GetExtension(img.FileName)}"
            })
        });
    }

    private string LatexToMathML(string latex)
    {
        // 调用开源转换库(推荐使用MathJax.NET)
        using var converter = new MathJaxConverter();
        return converter.Convert(latex);
    }
}

(突然神秘兮兮)关于那个emz/wmz格式的公式图片,这里有个祖传偏方:

  1. 用Apache POI提取PPT中的公式
  2. 通过ImageMagick转成PNG
  3. 用OpenCV做锐化处理
  4. 最后用Tesseract OCR识别公式内容

(突然拍桌)但最骚的是微信公众号内容导入!直接祭出这个神器:

// 微信公众号内容抓取
function parseWechatContent(html) {
  const parser = new DOMParser()
  const doc = parser.parseFromString(html, 'text/html')
  
  // 提取正文
  const content = doc.querySelector('#js_content').innerHTML
  
  // 处理微信特色样式
  return content
    .replace(/ `]*)>/g, '')
    .replace(/<\/section>/g, '')
}

(突然正经)关于预算控制,给大家算笔明白账:

  1. 开源库组合(Mammoth.js + SheetJS + PDF.js)→ 0元
  2. 阿里云OSS学生认证(6个月免费)→ 0元
  3. 人工成本(用爱发电)→ 0元
  4. 群内红包基金(薅羊毛指南)→ 见群公告

(突然掏出手机)加群暗号"山西刀削面",进群即送:

  1. 价值99元的《Word公式转换避坑指南》
  2. 独家整理的《政府网站样式兼容性测试报告》
  3. 群主私藏的《甲方需求翻译词典》

最后透露个暴富秘诀:咱们这个插件包已经支持以下变现姿势

  1. 卖给教育局(每个学校需求量极大)
  2. 卖给科研机构(公式转换刚需)
  3. 卖给政府网站(无障碍阅读要求)
  4. 卖给培训机构(题库导入神器)

(突然压低声音)现在进群的前100名,送价值连城的《如何让甲方主动加预算》话术模板!错过再等一年!

代码仓库:https://github.com/shanxi-fe/doc-import-plugin
(突然发现预算超了5元)咳咳…这个…大家众筹一下服务器费用?

将插件目录复制到项目中

image

引入插件文件

image

定义插件图标

image

初始化插件

在工具栏中添加插件按钮
image

效果

编辑器

编辑器

导入Word文档,支持doc,docx

粘贴Word和图片

导入Excel文档,支持xls,xlsx

粘贴Word和图片

粘贴Word

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

Word转图片

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

导入PDF

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

导入PPT

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

上传网络图片

一键自动上传网络图片,自动下载远程服务器图片,自动上传远程服务器图片
自动上传网络图片

下载示例

点击下载完整示例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值