zoukankan      html  css  js  c++  java
  • echarts结合poi-word导出的简单处理

    获取图像

    echarts是通过canvas进行图表的绘制的,所以可以通过canvas来获取图片的base64编码,然后将base64编码传到后台进行处理。
    1.如何获取报表图片的base64编码:
        $('canvas').toDataURL(); //打印出base64编码。
    2.如何将编码充送给后台
        我是通过spring-mvc 结合ajax提交进行传值的,这里就不多说了。
    

    生成word文件

    poi-word文件操作基本:
        // 生成word页节点
        XWPFDocument doc = new XWPFDocument();
        // 生成word段落
        XWPFParagraph page = doc.createParagraph();
    

    代码块

    import com.libaisi.model.WordModal;
    import org.apache.poi.util.Units;
    import org.apache.poi.xwpf.usermodel.*;
    
    import javax.imageio.ImageIO;
    import javax.servlet.http.HttpServletResponse;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayInputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.InputStream;
    import java.util.ArrayList;
    import java.util.Base64;
    import java.util.List;
    
    /**
     * Created by shiqiang on 2017/4/18.
     */
    public class WordExport {
        //信息可以是集合
        public static <T> void export(List<T> list, WordModal wordModal,String [] images) throws Exception
        {
            // 生成word页节点
            XWPFDocument doc = new XWPFDocument();
    
            // 生成word段落
            XWPFParagraph page = doc.createParagraph();
            page.setAlignment(ParagraphAlignment.CENTER);
            page.setVerticalAlignment(TextAlignment.TOP);
            // 标题部分
            XWPFRun run = page.createRun();
            run.setBold(true); // 设置为粗体
            run.setFontSize(28);
            run.setText(wordModal.getwName());
            for (int i = 0;i < list.size();i++)
            {
                page = doc.createParagraph();
                page.setAlignment(ParagraphAlignment.LEFT);
                page.setVerticalAlignment(TextAlignment.TOP);
                run = page.createRun(); // 一条数据一个段落
                // 文本段落
                run.setText(String.valueOf(list.get(i))); 
            }
    
            // 重新生成段落进行图片的绘制
            page = doc.createParagraph();  
            run = page.createRun();
            for (int i = 0;i < images.length; i++)
            {
                // 每行最多创建两张图片
                if (i != 0 && i % 2 == 0) page = doc.createParagraph();
                byte[] data = Base64.getDecoder().decode(images[i]);
                ByteArrayInputStream bais = new ByteArrayInputStream(data);           
                run.addPicture(bais,XWPFDocument.PICTURE_TYPE_PNG, i + ".png", Units.toEMU(200), Units.toEMU(120));
            }
            File file = new File("d:/test");
            if (!file.exists())
            {
                file.mkdirs();
            }
            FileOutputStream fos = new FileOutputStream(new File(file, "text2.docx"));
            doc.write(fos);
            doc.close();
            fos.close();
        }
    
        public static void main(String [] args)
        {
            WordModal wordModal = new WordModal();
            wordModal.setwName("测试word导出!");
            List<String> list = new ArrayList<String>();
            list.add("一会还要加图片。");
            list.add("我想说的是这才好使。");
            list.add("没有什么不可能得,不可能就自己把他变成可能的");
            HttpServletResponse response;
        //这个是base64码   图片转换成的
            String [] images = {"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"};
            try {
                export(list, wordModal, images);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }

    注意:
    run.addPicture(bais,XWPFDocument.PICTURE_TYPE_PNG, i + “.png”, Units.toEMU(200), Units.toEMU(120));

    此方法中的第二个参数一定要以poi提供的格式给出,不可以直接以数字进行赋值。

    项目中的需求是使用是从前端获取echarts的图像然后传递到后台写入word中:

    前端需要注意传递图像的base64时需要给base64添加编码encodeURIComponent:

     后台将base64写入流之前需要注意,去掉图像base64前面的data:image/png;base64,,然后用Base64.getDecoder().decode(imageUrlBase64)进行解码

  • 相关阅读:
    Nginx+.Net Core实现项目负载均衡
    linux(centos8):使用zip/unzip压缩和解压缩文件
    spring boot:用itextpdf处理pdf表格文件(spring boot 2.3.2)
    spring boot:使用poi导出excel电子表格文件(spring boot 2.3.1)
    spring boot:发送带附件的邮件和html内容的邮件(以163.com邮箱为例/spring boot 2.3.2)
    暗夜模式配置
    简述逻辑外键
    分页后端逻辑
    python算法时间复杂度
    python五大排序算法
  • 原文地址:https://www.cnblogs.com/henuyuxiang/p/14632262.html
Copyright © 2011-2022 走看看