JXLS 2.4.0系列教程(六)番外篇——導出圖片(完結)

  忽然想起來有同窗說過能不能導出圖片,原本我是想說不懂的,後來我上官網查了查,還挺容易。我就簡短的寫一寫怎麼導出圖片。html

  官方提供了導出圖片標籤:java

jx:image(lastCell="D10" src="image" imageType="PNG")數組

  這是在java中的代碼調用:工具

InputStream imageInputStream = ImageDemo.class.getResourceAsStream("business.png"); byte[] imageBytes = Util.toByteArray(imageInputStream); context.putVar("image", imageBytes);

  我把他寫進之前的源碼中,給同窗們看看怎麼導出圖片。spa

  還記得之前寫過一個person類嗎?.net

public class Person { String id; String name; Integer age; byte[] img; /** 省略構造器和get/set方法 */ }

  咱們加入一個新的屬性byte[] byte數組imgexcel

  而後咱們看看main方法怎麼寫。code

public static void main(String[] args) throws Exception { // 模板位置,輸出流
        String templatePath = "E:/template3.xls"; OutputStream os = new FileOutputStream("E:/out4.xls"); // 文件流,輸入一張叫fly的png圖片
        InputStream imageInputStream = new FileInputStream("E:/fly.png");      // 使用工具方法把流轉成byte數組
        byte[] imageBytes = Util.toByteArray(imageInputStream); // 一個裝有對象數據的鏈表
        List<Person> persons = new ArrayList<Person>(); Person p1 = new Person("001", "張三", 18); Person p2 = new Person("002", "李四", 19); Person p3 = new Person("003", "王五", 20);      // 把圖片轉換的字節數組存進person對象中
 p1.setImg(imageBytes); p2.setImg(imageBytes); p3.setImg(imageBytes); persons.add(p1); persons.add(p2); persons.add(p3); Map<String, Object> model = new HashMap<String, Object>(); model.put("person", persons);    // 把鏈表放進model中 
 JxlsUtils.exportExcel(templatePath, os, model); os.close(); System.out.println("完成"); }

  代碼中有個流轉字節數組的工具類Util.toByteArray,這個工具類文章後我會提供下載連接。htm

  下面看下導出模板:對象

 

  老生常談的就不說了,說下畫紅框框的:

jx:image(lastCell="D4" src="p.img" imageType="PNG")

  這是一個用來導出圖片的標籤,依照官方說明imageType圖片類型默認是PNG,支持:PNG, JPEG, EMF, WMF, PICT, DIB

  srcmodel中傳入的字節數組byte[]

  lastCell是圖片結束位置,會自動拉伸填充完你定義的格子。好比你在A1中加入了這個註解,lastCellC6,就會把A1C6都拉伸填充完。

  行了,執行代碼導出吧。

 

  這裏是把字節數組放在遍歷對象裏的遍歷出來的,你要是不想遍歷,而是隻想顯示一張圖片,你看了這麼多篇我寫的文章,應該不用我說該怎麼作吧?就是直接把字節數組放進model中,在excel中取出就好了。

  官方圖片導出簡介:

  http://jxls.sourceforge.net/reference/image_command.html#

  下載工具類依賴的jar包:commons-codec-1.10.rar

 


  

  我本來的計劃是寫上五篇JXLS2.4的基礎教程的,如今卻是寫了六篇,花了兩天的時間。目前看來算是寫完了。將來會不會有更新機會要看我能把這個工具用到什麼程度了。這個工具還有不少的功能,我估計都不大可能用得上了!哈哈哈。先這樣吧,寫了兩天,剩下的國慶時間讓我好好的過個國慶!

  有什麼意見請在文章後留言,若是你要問我某某某怎麼實現,你就先翻翻我有沒有寫過,若是我沒有寫過,估計我也不懂。

  我也不知道有沒有代碼複製下來執行不了的。這麼幾行代碼都有報錯,隨緣吧!

相關文章
相關標籤/搜索