Java 将Excel转为SVG的方法

1. 程序运行环境如下:

编译工具:IDEA

JDK版本:1.8.0

Excel测试文档:.xlsx 2013

Excel工具jar包:free spire.xls.jar 3.9.1

2.关于如何导入jar包

方法1:手动下载jar包。解压,将文件路径:D:\...\Spire.Xls-FE_3.9.1\lib\Spire.Xls.jar中的文件导入Java程序(即本文中使用的方法)。

方法2:Maven仓库下载导入。先在maven程序中配置pom.xml文件,如下内容:

<repositories>

        <repository>

            <id>com.e-iceblue</id>

            <url>http://repo.e-iceblue.cn/repository/maven-public/</url>

        </repository>

    </repositories>

<dependencies>

    <dependency>

        <groupId> e-iceblue </groupId>

        <artifactId>spire.xls.free</artifactId>

        <version>3.9.1</version>

    </dependency>

</dependencies>

完成配置后,点击“Import”下载导入。

3. Java代码

import com.spire.xls.*;

import java.io.FileOutputStream;
import java.util.List;
import java.util.Map;

public class ExcelToSVG {
    public static void main(String[] args) throws Exception{
        //加载Excel测试文档
        Workbook workbook = new Workbook();
        workbook.loadFromFile("sample.xlsx");

        int count = 1;

        //获取分页信息
        List<Map<Integer, PageColRow>> pageInfoList = workbook.getSplitPageInfo();

        //遍历工作表
        for (int i = 0; i < workbook.getWorksheets().getCount(); i++)
        {
            Worksheet sheet = workbook.getWorksheets().get(i);

            FileOutputStream stream;
            Map integerPageColRowMap = pageInfoList.get(i);//获取每页sheet的分页信息
            for (Object object : integerPageColRowMap.values())
            {
                PageColRow colRow = (PageColRow) object;

                stream = new FileOutputStream( (count++) + "-ExcelToSVG.svg");//指定文件名输出格式

                //保存为SVG
                sheet.toSVGStream(stream, colRow.StartRow, colRow.StartCol, colRow.EndRow, colRow.EndCol);
                stream.flush();
                stream.close();
            }
        }

    }
}

转换结果可在IDEA项目文件夹下查看,如下图:

另一种方法

同样使用Free-Spire-XLS

依赖引入同上

转换工具类

import com.spire.xls.Worksheet;
import org.apache.poi.ss.usermodel.Workbook;
import sun.misc.BASE64Encoder;

import javax.imageio.ImageIO;
import javax.imageio.stream.ImageInputStream;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;

/**
 * Excel转换处理工具类:转为图片、svg文件等
 *
 * @author yangfeng
 * @date 2019-12-26
 */
public class ExcelTransformUtil {

    /**
     * workbook 转为输入流
     *
     * @param workbook
     * @return
     * @throws Exception
     */
    public static InputStream convert2Stream(Workbook workbook) throws Exception {
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        workbook.write(bos);
        byte[] barray = bos.toByteArray();
        return new ByteArrayInputStream(barray);
    }

    /**
     * excel 转为图片
     *
     * @param inputStream
     */
    public static void excel2Img(InputStream inputStream) {
        com.spire.xls.Workbook book;
        try {
            book = new com.spire.xls.Workbook();
            book.loadFromStream(inputStream);
            Worksheet sheet = book.getWorksheets().get(0);
            sheet.saveToImage("d://toImg.png");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * excel 转为SVG
     *
     * @param inputStream
     */
    public static void excel2SVG(InputStream inputStream, HttpServletResponse response) {
        com.spire.xls.Workbook book;
        try {
            book = new com.spire.xls.Workbook();
            book.loadFromStream(inputStream);
            Worksheet sheet = book.getWorksheets().get(0);
            sheet.toSVGStream(response.getOutputStream(), sheet.getFirstRow(), sheet.getFirstColumn(),
                    sheet.getLastRow(), sheet.getLastColumn());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

生成svg服务

 public void generateSVG(ReportRequest request, HttpServletResponse response) throws Exception {
        ServiceResult<List<OperationReportVO>> result = getOperationReport(request);
        if (result != null && result.isSucceed() && !CollectionUtils.isEmpty(result.getData())) {
            //转为map
            List<Map<String, Object>> list = MapBeanUtil.objectsToMaps(result.getData());
            Workbook workbook = ReportExportUtil.generateExcelReport("运行情况统计表",
                    getDateAndWeek(request.getPlanDate()), list, OperationReportVO.class);
            ExcelTransformUtil.excel2SVG(ExcelTransformUtil.convert2Stream(workbook), response);
        }
    }

此处的Workbook引自包:org.apache.poi.ss.usermodel.Workbook 。生成excel的workbook。然后将workbook转为输入流,com.spire.xls.Workbook读取输入流,转成svg。

以上就是Java 将Excel转为SVG的方法的详细内容,更多关于Java 将Excel转为SVG的资料请关注我们其它相关文章!

(0)

相关推荐

  • Java实现把excel xls中数据转为可直接插入数据库的sql文件

    我的一贯风格,代码说明一切.. 废话不多说了,直接给大家贴代码了,具体代码如下所示: package Tools; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.Field; import java.util.ArrayList; import java.util.List; im

  • Java基于Spire Cloud Excel把Excel转换成PDF

    Spire.Cloud.Excel Sdk 提供GeneralApi接口和WorkbookApi接口,支持将本地Excel和云端Excel文档转换为ODS, PDF, XPS, PCL, PS等格式.本文以将Excel表格转为PDF为例,介绍实现格式转换的步骤及方法. 所需工具:Spire.Cloud.Excel.Sdk 必要步骤: 步骤1:Jar文件下载及导入.可通过"下载中心"下载获取jar:或者通过maven仓库安装导入,具体参考安装方法. 步骤2:ID及Key获取.需要在云端创

  • Java实现Word/Excel/TXT转PDF的方法

    引言: 前段时间公司做的教育系统,系统需要实时记录用户学习课程的情况和时间,所以对一些除视频课程之外,对一些文本文档型课件同样如此,初次的方案是讲office相关类型的文件进行转换Html文件,然后展示对应的html文件,PC端差不多没问题了,但是个别文件再转换html之后,样式出现了错乱,即时做了编码转换处理,但是还是有个别乱码,最后改变方案,最后统一将文件转为pdf,然后通过流的方式在前端展示,其中包括Word Excel PPT TXT PDF等文件,代码如下: 备注:本来是可以直接展示p

  • java 中Excel转shape file的实例详解

    java  中Excel转shape file的实例详解 概述: 本文讲述如何结合geotools和POI实现Excel到shp的转换,再结合前文shp到geojson数据的转换,即可实现用户上传excel数据并在web端的展示功能. 截图: 原始Excel文件 运行耗时 运行结果 代码: package com.lzugis.geotools; import com.lzugis.CommonMethod; import com.vividsolutions.jts.geom.Coordina

  • java生成饼图svg及JFreeChart生成svg图表

    Jfreechart本身不能生成SVG图形,但是可以借助另外一个东西,辅助生成.好像是这个:batik ,具体代码请看下文 一:Java生成svg饼图,附带了一个标签显示各个颜色代表的部分 package com.tellhow.svg; import java.io.File; import java.io.FileOutputStream; /** * * @author 风絮NO.1 * */ public class CakySvgWithLabel { //定义不同的颜色 static

  • java 读取excel文件转换成json格式的实例代码

    需要读取excel数据转换成json数据,写了个测试功能,转换正常: JSON转换:org.json.jar 测试类:  importFile.java: package com.siemens.util; import java.util.ArrayList; import java.util.List; import org.json.JSONException; import org.json.JSONObject; import org.apache.poi.ss.usermodel.R

  • java实现在线预览--poi实现word、excel、ppt转html的方法

    java实现在线预览 - -之poi实现word.excel.ppt转html,具体内容如下所示: ###简介 java实现在线预览功能是一个大家在工作中也许会遇到的需求,如果公司有钱,直接使用付费的第三方软件或者云在线预览服务就可以了,例如永中office.office web 365(http://www.officeweb365.com/)他们都有云在线预览服务,就是要钱0.0 如果想要免费的,可以用openoffice,还需要借助其他的工具(例如swfTools.FlexPaper等)才

  • Java使用jacob将微软office中word、excel、ppt转成pdf

    本文实例为大家分享了Java使用jacob将微软office文档转成pdf的具体代码,供大家参考,具体内容如下 在使用jacb前,我们需要去下载 jacob.jar 和 jacob-1.18-x64.dll 其次,我们需要将jacob-1.18-x64.dll放入到jdk的bin目录下才可以使用 第三,使用jacb之前,我们需要确保office能正常使用 如果你现在使用的是maven工程,那么不好意思,现在还没有发布正式的jacb资源文件,我们需要自定的maven依赖,如下: <dependen

  • Java实现的Excel列号数字与字母互相转换功能

    本文实例讲述了Java实现的Excel列号数字与字母互相转换功能.分享给大家供大家参考,具体如下: 我们在实现对Excel的导入导出的时候,往往需要准确的给用户提示信息,提示到具体的Excel的单元格,这里就需要对Excel的列号进行数字和字母的转换,今天正好用到这个需求,所以就写了一个demo,总结一下: Java实现: package test; /** * Deal with Excel column indexToStr and strToIndex * @author Stephen.

  • Java实现excel表格转成json的方法

    今天有个朋友问我,有没有excel表格到处json的方法,在网上找到了好几个工具,都不太理想,于是根据自己的需求,自己写了一个工具. 功能代码 package org.duang.test; import java.io.File; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import net.sf.json.JSONArray; impo

  • java POI解析Excel 之数据转换公用方法(推荐)

    如下所示: public static String reThreeStr(String ss){ boolean result= ss.matches("^[-+]?(([0-9]+)([.]([0-9]+))?|([.]([0-9]+))?)$"); if(result&&ss!=null&&!"".equals(ss)){ Double sss=Double.valueOf(ss); String numStr=new java

  • java实现excel和txt文件互转

    话不多说,请看代码: import java.io.*; import jxl.*; import jxl.write.*; //用java将txt数据导入excel public class CreateXLS { public static void main(String args[]) { try { //打开文件 WritableWorkbook book= Workbook.createWorkbook(new File("测试.xls")); //生成名为"第一

随机推荐