1. 程式人生 > >圖片用Excel畫出來(JAVA)

圖片用Excel畫出來(JAVA)

能夠將任何圖片在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]);
	}

}



相關推薦

圖片Excel出來(JAVA)

能夠將任何圖片在excel上利用單元格背景完整的描繪出來。 像網路上出現的用excel畫出超級瑪麗等等,各種圖片都能在excel上"畫"出來。 圖片我沒有經過特殊處理,所以轉換的圖片不能太大,有多大的圖片就要有多少的單元格。如640*480就有307200的單元格。

登入時生成驗證碼和後臺驗證詳解(驗證碼圖片jsp顯示出來的)

登入視窗程式碼HTML <section class="mainlogin"> <div class="container"> <div class="col-md-4 col-md-offset-7 loginconte

[Excel圖表]excel座標散點圖,並新增資料標籤

今天在寫畢業論文的時候發現自己需要畫座標圖,在網上找來找去終於找到了方法,下面是記錄: 開啟excel之後填好資料: 像這樣,之後選擇要畫的座標點,點選插入散點圖, 之後出現的散點圖是這樣的:並沒有達到預期的目的,因為我想讓每個點上都標上序號。 開始: 首先將散點圖轉換

通過java代碼實現調excel當中的宏的操作。

合同 println ren () 版本 imp port exc length 最近做的項目是自動化生成基金的交易合同的操作。然後就想著通過java代碼去操作Excel當中的宏按鈕,然後生成word版本的合同的操作。 具體的java代碼如下: import org.ju

滑鼠圓(java GUI)

話不多說,先看效果 當然你也可以發揮腦洞繪製更更棒的 原始碼如下: package javaBasic; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*;

JAVA以UTF-8匯出CSV檔案,excel開啟產生亂碼的解決方法

先上一段程式碼(上好的程式碼,多年陳釀) OutputStreamWriter osw = new OutputStreamWriter(resp.getOutputStream(), "UTF-8"); // 要輸出的內容 result = (String)co

android 開發 View _12_ Canvas 繪製一張圖片(部落格中演示Canvas驗證碼圖片

package net.yt.yuncare.widgets; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import and

java後端生成二維碼圖片來下載

應公司需求,要求生成二維碼圖片,並且將二維碼放進一張底層圖片上,並賦予文字。    1.首先我們要想辦法生成二維碼,二維碼是黑白雙色,中間不用新增商戶logo,這裡我們採用的google的jar包生成二維碼匯入maven依賴:<dependency> <

c# winform 滑鼠出來的虛線框,滑鼠框選邊框效果

using System;   using System.Collections.Generic;   using System.ComponentModel;   using System.Data;   using System.Drawing;   using

Java Web篇:匯出等比例圖片Excel

ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();BufferedImage bufferImg = ImageIO.read(new File(savePath + System.getProperty("file.separa

Java建立Excel檔案,Java Excel API的使用

Java Excel API的使用  Java Excel API(JXL)是一個成熟開源的Java類庫,用來操作Excel電子表格,支援讀取,修改,寫入等操作。這個專案基於GPL釋出,與poi比較,對中文有很好的支援。而且支援PNG格式圖片以及各種數字型別。當然poi除了可

excel宏的Java調

獲得 end quit dll return 工作薄 aac param isp 下載jacob-1.19.zip https://sourceforge.net/projects/jacob-project/ jacob-1.19-x64.dll放到C:\Window

jsp頁面與java代碼分離的方式寫一個簡單的二維表

color arraylist 一個 3-9 業務 動態顯示 復雜 分層架構 方式 前提:在我們做程序時追求的是高內聚,低耦合,但是如果我們把jsp頁面的的代碼和java的代碼都放在了jsp的代碼編寫中,使java和jsp高耦合這樣的話不僅使jsp代碼頁面顯得很復雜,而

C# 讀取數據,顯示再dataggrideView上。 先excel,後sqlite3。

.dll xls data 讀取 沒有 adapter .net sqlite3 ted 最近在做一個訂單管理的軟件,考慮直接讀取excel,然後把數據顯示在datagridView上。,然後使用NPOI操作excel。 1 string strCon = "Prov

c# 圖片插入Excel

rgs 功能 handle ace pri change () spa sdn 引用COM:Microsoft Office 11.0 Object Library 引用類: using System; using System.Windows.Forms;

python個五星紅旗

eth for forward margin mar turtle got idt 根據 根據下圖發現,主星和2、3副星從右畫就好,而1、4副星從左開始畫會比較好找坐標。 import turtle turtle.bgcolor("red") turtle.fil

php批量導入帶有圖片Excel表格

php導入excel php批量導入圖片 <?php // +---------------------------------------------------------------------- // | ThinkPHP [ WE CAN DO IT JUST THINK ] // +

phpexcel導出文件後,wps能 excel打開亂碼解決

-type code post exe 導出文件 osi creat function new 導出excel後wps能用 excel打開亂碼,是因為導出的類使用方式問題 把$objWriter = new \PHPExcel_Writer_Excel2007($this-

shape內圓外方,形成一個圓形頭像

imageview nco text 三角形 圓形 新建 watermark 透明 技術分享 很多人都有過這樣的經歷,想要在自己寫的程序裏,上傳一張隨便大小形狀的照片在程序裏顯示都是圓形照片,或者是方形,或者是三角形,但是寫代碼又非常麻煩,這裏就有一個也可以實現一樣效果的方

python一朵玫瑰花

jpg port es2017 time logs 代碼 from mage light 廢話不多說,直接上代碼 from turtle import * import time setup(600,800,0,0) speed(0) penup() seth(90)