package com.chinaweal.aiccs.common.util;

import lombok.extern.slf4j.Slf4j;
import org.apache.poi.poifs.filesystem.DirectoryEntry;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;

import java.io.*;
import java.net.URLDecoder;

/**
 * @author Lee
 * @since 2021/5/24 16:49
 */
@Slf4j
public class PoiUtils {

    public static void htmltoDocx(String html) throws Exception {
        String decodeHtml = URLDecoder.decode(html, "UTF-8");
        String content="<html><body>"+ decodeHtml +"</body></html>";
        byte[] b = content.getBytes("utf-8");  //这里是必须要设置编码的，不然导出中文就会乱码。
        ByteArrayInputStream bais = new ByteArrayInputStream(b);//将字节数组包装到流中
        File outputFile = new File("D:/321.doc");
        // 2 如果目标路径不存在 则新建该路径
        if (!outputFile.getParentFile().exists()) {
            outputFile.getParentFile().mkdirs();
        }

        try (FileOutputStream fos = new FileOutputStream(outputFile)){
            //核心代码
            POIFSFileSystem poifs = new POIFSFileSystem();
            DirectoryEntry directory = poifs.getRoot();
            directory.createDocument(
                    "WordDocument", bais);

            poifs.writeFilesystem(fos);

            log.info("转换word文件完成!");

        } catch (IOException e) {
            log.error("转换word文件异常", e);
        }

    }
}
