java实现图片用Excel画出来

本文实例为大家分享了java用Excel将图片画出来的具体代码,供大家参考,具体内容如下

能够将任何图片在excel上利用单元格背景完整的描绘出来。

像网络上出现的用excel画出超级玛丽等等,各种图片都能在excel上"画"出来。

图片我没有经过特殊处理,所以转换的图片不能太大,有多大的图片就要有多少的单元格。如640*480就有307200的单元格。

如要转换的图片:

转换后在excel中的效果:

没多大意义练练手:

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.Locale;

import javax.swing.ImageIcon;

import jxl.Workbook;
import jxl.WorkbookSettings;
import jxl.format.Colour;
import jxl.read.biff.BiffException;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;

public class Helper {
 private BufferedImage getBufferedImage(String filepath)
 {
 ImageIcon imgicon=new ImageIcon(filepath);
 BufferedImage bufferedImage = new BufferedImage(imgicon.getIconWidth(),imgicon.getIconHeight(),BufferedImage.TYPE_INT_RGB);  

 bufferedImage.createGraphics().drawImage(imgicon.getImage(), 0, 0,null);
 return bufferedImage;

 }

 private Colour getNearestColour(Color awtColor) {
  Colour color = null;
  Colour[] colors = Colour.getAllColours();
  if ((colors != null) && (colors.length > 0)) {
  Colour crtColor = null;
  int[] rgb = null;
  int diff = 0;
  int minDiff = 999; 

  for (int i = 0; i < colors.length; i++) {
  crtColor = colors[i];
  rgb = new int[3];
  rgb[0] = crtColor.getDefaultRGB().getRed();
  rgb[1] = crtColor.getDefaultRGB().getGreen();
  rgb[2] = crtColor.getDefaultRGB().getBlue(); 

  diff = Math.abs(rgb[0] - awtColor.getRed())
   + Math.abs(rgb[1] - awtColor.getGreen())
   + Math.abs(rgb[2] - awtColor.getBlue()); 

  if (diff < minDiff) {
   minDiff = diff;
   color = crtColor;
  }
  }
  }
  if (color == null)
  color = Colour.BLACK;
  return color;
  }
 public void exec(String convertFromImage,String createxls) throws Exception
 {

 WorkbookSettings ws = new WorkbookSettings();
  ws.setLocale(new Locale("en", "EN"));
  WritableWorkbook workbook = Workbook.createWorkbook(new File(createxls), ws);
  WritableSheet s2 = workbook.createSheet("picture", 0);
  BufferedImage buffimage= getBufferedImage(convertFromImage);
  int width=buffimage.getWidth();
  int heigh=buffimage.getHeight();
  for(int i=0;i<width;i++)
  {
   for(int h=0;h<heigh;h++)
  {
    WritableCellFormat greyBackground = new WritableCellFormat();
    Color c = new Color(buffimage.getRGB(i, h)); 

  greyBackground.setBackground( getNearestColour(c) );

  Label lr = new Label(i, h, "", greyBackground);

  s2.addCell(lr);
  }

  }

  //写入Excel对象
  workbook.write(); 

  workbook.close();

 }
 /**
 * @param args
 * @throws IOException
 * @throws BiffException
 */
 public static void main(String[] args) throws Exception {
 Helper helper=new Helper();

 System.out.println("输入的图片:"+args[0]);
 System.out.println("输出的excel:"+args[1]);
 System.out.println("转换开始");
 //转换执行的方法参数 args[0]输入的图片路径 args[1]输出的excel路径
// helper.exec( "mslogo.jpg","1.xls");
 helper.exec(args[0],args[1]);
 }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Windows中使用Java生成Excel文件并插入图片的方法

    生成简单的Excel文件  在现实的办公中,我们常常会有这样一个要求:要求把报表直接用excel打开.在实习中有这样一个需求.根据所选择的资源查询用户所提供附件的全部信息并生成excel供下载.但是在查询的时候我们需要来检测用户所提供的附件里面的信息是否有错误(身份证).有错误的生成错误信息excel.      Apache的POI项目,是目前比较成熟的HSSF接口,用来处理Excel对象.其实POI不仅仅只能处理excel,它还可以处理word.PowerPoint.Visio.甚至Outl

  • 如何通过java实现highcharts导出图片至excel

    1. 目的 通过java后台实现将前端页面的highcharts图表导出至生成的excel文件中.使用于报表页面导出类功能. 2. 说明 前端页面将图表的svg信息字符串作为参数传递 后台使用batik工具包生成图片 使用poi工具包操作excel 3. 使用jar包 1.batik-all-1.7.jar 2.poi-3.12.jar 3.commons-codec-1.12.jar 不导入不会报错,但使用时异常,提示信息:Exception in thread "main" jav

  • java poi导出图片到excel示例代码

    本文实例为大家分享了java使用poi导出图片到Excel的具体代码,供大家参考,具体内容如下 代码实现 Controller /** * 导出志愿者/人才数据 * @param talent_type * @return */ @RequestMapping("/exportData") public void exportData(Integer talent_type, HttpServletResponse response) { String fileId = UUID.ra

  • java实现图片用Excel画出来

    本文实例为大家分享了java用Excel将图片画出来的具体代码,供大家参考,具体内容如下 能够将任何图片在excel上利用单元格背景完整的描绘出来. 像网络上出现的用excel画出超级玛丽等等,各种图片都能在excel上"画"出来. 图片我没有经过特殊处理,所以转换的图片不能太大,有多大的图片就要有多少的单元格.如640*480就有307200的单元格. 如要转换的图片: 转换后在excel中的效果: 没多大意义练练手: import java.awt.Color; import ja

  • java 在图片上写字,两个图片合并的实现方法

    实例如下: package writeimg; import javax.imageio.ImageIO; import java.awt.Color; import java.awt.Font; import java.awt.Graphics2D; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOException; import java.net.URL; public class pic

  • java将图片转为base64返回给前端

    本文实例为大家分享了java将图片转为base64返回给前端的具体代码,供大家参考,具体内容如下 一.controller端代码 @RequestMapping(value = "/captcha") public void imagecode(HttpServletRequest request, HttpServletResponse response) throws Exception { JSONObject object = new JSONObject(); Captcha

  • Java中easypoi导入excel文件列名相同的处理方案

    Easypoi是什么 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没接触过poi的人员,就可以方便的写出Excel导出.Excel模板导出.Excel导入.Word模板导出,通过简单的注解和模板语言(熟悉的表达式fe语法),完成以前复杂的写法 开源地址:https://gitee.com/lemur/easypoi 独特的功能 基于注解的导入导出,修改注解就可以修改Excel 支持常用的样式自定义 基于map可以灵活定义的表头字段 支持一堆多的导出,导入 支持模板的导出,一些

  • java 使用poi 导入Excel数据到数据库的步骤

    由于我个人电脑装的Excel是2016版本的,所以这地方我使用了XSSF 方式导入 . 1 先手要制定一个Excel 模板 把模板放入javaWeb工程的某一个目录下如图: 2 模板建好了后,先实现模板下载功能 下面是页面jsp代码在这里只贴出部分代码 <!-- excel 导入小模块窗口 --> <div id="importBox" class="" style="display: none;"> <form i

  • java 实现图片合成,并添加文字

    最近公司一个需要,需要把商品的优惠卷分享链接,生成一个二维码然后和商品主图合成一张,并且在新合成的主图增加商品信息的描述,好了直接看合成后图片的样式 下面我就直接贴代码,首先是Contorller层 /** * 淘宝二维码,商品主图,合成一张图 * * @param pictUrl * @param request * @param response * @throws IOException */ @RequestMapping("/getTaoBaoqQRCode") public

  • Java实现图片比率缩放

    本文实例为大家分享了Java实现图片比率缩放的具体代码,供大家参考,具体内容如下 通过Thumbnails实现图片缩放 需要导入pom依赖,可以到中央仓库获取最小的工具包 <dependency>        <groupId>net.coobird</groupId>        <artifactId>thumbnailator</artifactId>         <version>0.4.8</version&g

  • Java使用POI导出Excel(一):单sheet

    相关文章: Java使用POI导出Excel(一):单sheet Java使用POI导出Excel(二):多个sheet 相信在大部分的web项目中都会有导出导入Excel的需求,今天我们就来看看如何用Java代码去实现 用POI导出Excel表格. 一.pom引用 pom文件中,添加以下依赖  <!--Excel工具--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>po

随机推荐