1. 业务开发

2. 配置导入导出

最核心的导入导出配置管理。

导出采用SQL配置,只接受id为参数,前端需要组织好需要导出的数据id数组。

导入采用JSON配置,支持一对一多表导入。

3. 导入导出前端组件

首先在cms>content>main.ftl页面引入组件

<#include "/component/ms-imp.ftl">
<#include "/component/ms-exp.ftl">

3.1. 导入组件

在页面添加组件标签,可以根据参数进行调整

<ms-imp style="margin-right: 8px" 
id="文章" 
type="word" 
limit="1" 
:multiple="true"
img-dir="/upload/1/cms/content/editor/" 
:columns="{categoryId:form.categoryId}" 
:disabled="!form.categoryId" 
@success="list" >
</ms-imp>
参数 是否必填 说明
id 导入导出配置名称
type 导入类型 支持word excel
multiple true批量导入\false逐条导入
img-dir 图片存放路径,推荐存放在upload文件夹下
disabled 禁用状态 true禁用\false启用
columns json参数,只有word有效果,excel无效,columns的参数key必须与json配置的columns的key一致
success 导入成功调用方法,例如:list(),刷新当前页面数据
limit 限制导入的文件数量

[!tip]

columns根据excel列名与表字段对应,注意excel导入组件不支持columns属性

3.2. 导出组件

<ms-exp style="margin-right: 8px" 
id="文章" type="word|excel" 
:ids="ids"  
:disabled="!selectionList.length" >
</ms-exp>
参数 是否必填 说明
id 导入导出配置名称
ids 用于传递导出sql配置的参数
type 导出类型支持word excel
disabled 禁用状态 true禁用\false启用

获取ids参考代码

...
//el-table选中数据
handleSelectionChange: function (val) {
    //组织ids
    that.ids = [];
    val.forEach(row => that.ids.push(row.id));
},
...

[!tip]
需要先在Vue实例中定义ids变量

3.3. 工具类wordUtil

/**
 * word通用工具,需要依赖poi与docx4j
 * 1、poi的转换处理比较麻烦,稳定性不是很好,例如:word2html 结果再转回word格式有差异
 * 2、docx4j处理比较方便,推荐使用,兼容性好
 * 3、poi与docx4j都存在jar包版本冲突问题,需注意pom.xml
 */
/**
* 基于docx4j,html转换word
* 参考:https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/samples/java/org/docx4j/samples/XhtmlToDocxAndBack.java
*
* @param content html内容
* @param docPath doc生成路径
* @param imgPath 图片资源路径
* @throws JAXBException
* @throws Docx4JException
*/
public static void html2Docx(String content, String docPath, String imgPath)

/**
* 基于docx4j,word转换html
* 参考:https://github.com/plutext/docx4j-ImportXHTML/blob/master/src/samples/java/org/docx4j/samples/DocxToXhtmlAndBack.java
*
* @param docPath doc文档路径
* @param imgPath 图片保存资源路径
* @return 返回html内容 null:生成临时文件失败
* @throws Exception
*/
public static String docx2Html(String docPath, String imgPath)

/**
* 基于poi,word转换html,推荐使用docx4j
* 导入word,核心就是将word文件转html存入数据库
* 流程:
* 1、通过第三方工具xdocreport与poi
* 2、word转html
* 3、读取html的内容
* 临时文件生成再当前项目temp文件夹;
*
* @param wordPath  word路径
* @param uploadDir 保存文件夹的目录存放路径,null资源文件夹采用base64位显示 ,例如:图片最终地址 baseDir/imgDir/文件名称
* @param imgDir    word中的图片存放路径,当baseDir==null,imgDir参数无效
* @return 返回html内容
*/
public static String word2Html(String wordPath, String uploadDir, String imgDir)


/**
 * 针对老的word进行图片资源处理
 */
static class ImageConverter extends WordToHtmlConverter {

    public ImageConverter(Document document) {
        super(document);
    }

    @Override
    protected void processImageWithoutPicturesManager(Element currentBlock, boolean inlined, Picture picture) {
        Element imgNode = currentBlock.getOwnerDocument().createElement("img");
        StringBuffer sb = new StringBuffer();
        sb.append(Base64.getMimeEncoder().encodeToString(picture.getRawContent()));
        sb.insert(0, "data:" + picture.getMimeType() + ";base64,");
        imgNode.setAttribute("src", sb.toString());
        currentBlock.appendChild(imgNode);
    }
}
Copyright © mingsoft.net 2012-2022 all right reserved,powered by Gitbook该文件修订时间: 2022-10-27 16:43:40

results matching ""

    No results matching ""

    results matching ""

      No results matching ""