一  Java中excel转换为jpg/png图片

package com.thinkgem.jeesite.modules.task.util;

import com.aspose.cells.ImageFormat;
import com.aspose.cells.ImageOrPrintOptions;
import com.aspose.cells.SheetRender;
import com.aspose.cells.Workbook;
import com.aspose.cells.Worksheet;
import java.io.File; public class ConvertToImage { public static void ConvertToImage (){ String dataDir = getDataDir(ConvertToImage.class);
// Create a new Workbook object
// Open a template excel file
Workbook book = null;
try {
//book = new Workbook(dataDir + "2018各项目情况.xlsx");
book = new Workbook("D:\\20180702_Game10002_DataReport.xls");
// Get the first worksheet
//Worksheet sheet = book.getWorksheets().get(0);
Worksheet sheet = book.getWorksheets().get(0);
sheet.getPageSetup().setLeftMargin(-20);
sheet.getPageSetup().setRightMargin(0);
sheet.getPageSetup().setBottomMargin(0);
sheet.getPageSetup().setTopMargin(0); // Define ImageOrPrintOptions
ImageOrPrintOptions imgOptions = new ImageOrPrintOptions();
// Specify the image format
imgOptions.setImageFormat(ImageFormat.getJpeg());
imgOptions.setCellAutoFit(true);
imgOptions.setOnePagePerSheet(true);
//imgOptions.setDesiredSize(1000,800);
// Render the sheet with respect to specified image/print options
SheetRender render = new SheetRender(sheet, imgOptions); // Render the image for the sheet
//render.toImage(0, dataDir + "SheetImage.jpg");
render.toImage(0, "D:\\SheetImage.jpg");
} catch (Exception e) {
e.printStackTrace();
} } /**
* @param filepath .xls或者.xlsx文件的路径
* @parampicpath jpg或者png图片的路径
*/
public static void ConvertToImage (String filepath ,String picpath){ String dataDir = getDataDir(ConvertToImage.class);
// Create a new Workbook object
// Open a template excel file
Workbook book = null;
try {
//book = new Workbook(dataDir + "2018各项目情况.xlsx");
book = new Workbook(filepath);
// Get the first worksheet
//Worksheet sheet = book.getWorksheets().get(0);
Worksheet sheet = book.getWorksheets().get(0); // Define ImageOrPrintOptions
ImageOrPrintOptions imgOptions = new ImageOrPrintOptions();
// Specify the image format
imgOptions.setImageFormat(ImageFormat.getJpeg());
imgOptions.setCellAutoFit(true);
imgOptions.setOnePagePerSheet(true);
imgOptions.setDefaultFont("200");
// Render the sheet with respect to specified image/print options
SheetRender render = new SheetRender(sheet, imgOptions); // Render the image for the sheet
//render.toImage(0, dataDir + "SheetImage.jpg");
render.toImage(0, picpath);
} catch (Exception e) {
e.printStackTrace();
} } public static String getDataDir(Class c) {
File dir = new File(System.getProperty("user.dir")); System.out.println("shake" + dir.getAbsolutePath()); dir = new File(dir, "src");
dir = new File(dir, "main");
dir = new File(dir, "resources"); for (String s : c.getName().split("\\.")) {
dir = new File(dir, s);
} if (dir.exists()) {
System.out.println("Using data directory: " + dir.toString());
} else {
dir.mkdirs();
System.out.println("Creating data directory: " + dir.toString());
} return dir.toString() + File.separator;
} public static void main (String[] args ){
ConvertToImage();
}
}

二 linux系统中采用aspose-cells-18.6.jar包生成图片中文乱码

具体解决方案:参考帖子

在Windows中一切良好,中英文都能很好的展示,但是在我将程序部署到Linux中后,却出现生成的图片中中文全部乱码(显示成一个个的方框)。

1)查看服务器字体列表

[root@iZ2zez5rp1bmsZ share]# cd fc-list
bash: cd: fc-list: No such file or directory

悲哀,连字体库都没有

2)安装字体库

# 先安装fontconfig,用fontconfig来安装字体库
[root@iZ2zebjvdi1bmsZ share]# yum -y install fontconfig
Loaded plugins: fastestmirror
...
Installed:
fontconfig.x86_64 0:2.10.95-10.el7 Dependency Installed:
fontpackages-filesystem.noarch 0:1.44-8.el7 Complete!

fontconfig安装成功后在/usr/share目录中就会看到fonts和fontconfig两个目录(没装fontconfig之前是没有这两个目录的

接下来就可以添加字体库了

3)添加字体

添加字体之前需要先下载相应的字体文件,博主用的是simsun.ttf(宋体)字体库,可以直接点击下载:下载simsun.zip

当然也可以去windows系统下的C:/windows/fonts目录下寻找合适的字体

字体文件准备好后,下边就正式开发操作

首先在/usr/share/fonts/目录下创建目录(名称随意)

mkdir chinese

然后将上方提供的

zip包中的两个文件全部解压并放到新建的目录(chinese)中,

然后修改chinese目录的权限

chmod -R 755 /usr/share/fonts/chinese

接下来需要安装ttmkfdir,这个命令的作用是搜索目录中所有的字体信息,汇总生成fonts.scale文件。

[root@iZ2zebjvditp1bmsZ fonts]# yum -y install ttmkfdir
Loaded plugins: fastestmirror
...
Installed:
ttmkfdir.x86_64 0:3.0.9-42.el7 Complete!

然后执行ttmkfdir命令:

[root@iZ2zz5rp1bmsZ fonts]# ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir

最后修改字体配置文件

vi /etc/fonts/fonts.conf

如下添加配置

<dir>/usr/share/fonts/chinese</dir>

最后保存文件并执行fc-cache进行刷新字体缓存

OK,到此字体就安装完成,在看一下字体列表:

[root@iZ2zebrp1bmsZ fonts]# fc-list
/usr/share/fonts/chinese/simsun.ttc: SimSun\-PUA,宋体\-PUA:style=Regular
/usr/share/fonts/chinese/simsun.ttc: NSimSun,新宋体:style=Regular
/usr/share/fonts/chinese/simsun.ttf: SimSun,宋体:style=Regular
/usr/share/fonts/chinese/simsun.ttc: SimSun,宋体:style=Regular

4)重新测试生成文件

三  官网下载地址

https://downloads.aspose.com/cells/java

Java中excel转换为jpg/png图片 采用aspose-cells-18.6.jar的更多相关文章

  1. 将java中数组转换为ArrayList的方法实例(包括ArrayList转数组)

    方法一:使用Arrays.asList()方法   1 2 String[] asset = {"equity", "stocks", "gold&q ...

  2. java中excel导入\导出工具类

    1.导入工具 package com.linrain.jcs.test; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import ...

  3. Java中List转换为数组,数组转List

    今天写代码遇到一个奇怪的问题,具体代码不贴出了,写一个简化的版本.如下: ArrayList<String> list=new ArrayList<String>();     ...

  4. Java 中数组转换为 List

    目录 1 - int 型数组转换为 List 2 - List 转换为 int 型数组 3 - String 型数组转换为 List 4 - List 转换为 String 型数组 版权声明 开发中经 ...

  5. C# WinForm 导出导入Excel/Doc 完整实例教程[使用Aspose.Cells.dll]

    [csharp] view plain copy 1.添加引用: Aspose.Cells.dll(我们就叫工具包吧,可以从网上下载.关于它的操作我在“Aspose.Cells操作说明 中文版 下载 ...

  6. java中getBytes方法可能使图片文件产生的问题

    InputStream is = new FileInputStream(fl); ImageInputStream iis = ImageIO.createImageInputStream(is); ...

  7. Java中Excel导入功能实现、excel导入公共方法_POI -

    这是一个思路希望能帮助到大家:如果大家有更好的解决方法希望分享出来 公司导入是这样做的 每个到导入的地方 @Override public List<DataImportMessage> ...

  8. 关于Java中excel表格导出的总结(Java程序导出模板和Java根据模板导出表格两种实现方式)

    导出excel通用模板(程序定义模板导出) 转载原文:https://www.jianshu.com/p/5c7b359a159c 如下代码,本方法主要用于程序定义模板格式,并导出文件.该方法将定义和 ...

  9. java 中Excel的导入导出

    部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字  的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...

随机推荐

  1. 无脑博士的试管们--dfs搜素

    无脑博士有三个容量分别是A,B,C升的试管,A,B,C分别是三个从1到20的整数,最初,A和B试管都是空的,而C试管是装满硫酸铜溶液的.有时,无脑博士把硫酸铜溶液从一个试管倒到另一个试管中,直到被灌试 ...

  2. db2报错 Operation not allowed for reason

    1.DB2数据库表操作错误SQL0668N Operation not allowed for reason code "1" on table "XXXX". ...

  3. 深入理解javascript构造函数和原型对象

    ---恢复内容开始--- 对象,是javascript中非常重要的一个梗,是否能透彻的理解它直接关系到你对整个javascript体系的基础理解,说白了,javascript就是一群对象在搅..(哔! ...

  4. kvm部署

    第一:安装前准备 vmware workstation的虚拟机做kvm实验,需要开启嵌套虚拟化 1.首先在物理机BIOS设置里开启虚拟化功能 2.其次需要在vm里面开启一下两个功能,(关闭虚拟机勾选即 ...

  5. Impala Apache Hadoop 安装方法

    http://blog.csdn.net/mayp1/article/details/50952512

  6. JAVA使用Logback发送日志到控制台、文件、ELK的最简单用法

    一.简述 本文讲JAVA使用Logback发送日志到控制台.文件.ELK的最简单用法. 二.教程 1.新建pom.xml项目引入下列依赖: <dependencies> <!--Be ...

  7. 如何卸载EXCEL中的插件?

    1.问题:每一次启动,excel都会弹出一个提示框,是因为将treeplan给删除了.找不到. 2.解决办法: 1)在加载项界面,点击转到.就进入自己加载的工具界面 2)将相应项前面的勾取消--但某插 ...

  8. 优麒麟 16.04 LTS(长期支持)版本

    Ubuntu Kylin (中文又被称为优麒麟)是基于Ubuntu的一款官方衍生版. 它是一款专门为中国市场打造的免费操作系统.它包括Ubuntu用户期待的各种功能,并配有必备的中文软件及程序. ht ...

  9. C#缓存absoluteExpiration、slidingExpiration两个参数的疑惑

    看了很多资料终于搞明白cache中absoluteExpiration,slidingExpiration这两个参数的含义. absoluteExpiration:用于设置绝对过期时间,它表示只要时间 ...

  10. 【C#】C#线程_I/O限制的异步操作

    目录结构: contents structure [+] 为什么需要异步IO操作 C#的异步函数 async和await的使用 async和Task的区别 异步函数的状态机 异步函数如何转化为状态机 ...