使用POI对xlsx中插入超链接和 插入图片

 package com.it.poiTest;

 import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException; import javax.imageio.ImageIO; import org.apache.poi.common.usermodel.Hyperlink;
import org.apache.poi.hslf.examples.CreateHyperlink;
import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.util.HSSFColor;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
import org.apache.poi.ss.usermodel.CreationHelper;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFCellStyle;
import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
import org.apache.poi.xssf.usermodel.XSSFDrawing;
import org.apache.poi.xssf.usermodel.XSSFFont;
import org.apache.poi.xssf.usermodel.XSSFHyperlink;
import org.apache.poi.xssf.usermodel.XSSFPicture;
import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook; public class AddPhotoUrl { public static void main(String[] args) {
XSSFWorkbook workbook = new XSSFWorkbook();
try {
FileOutputStream out = new FileOutputStream("AddPhotoUrl.xlsx");
XSSFSheet sheet = workbook.createSheet("1");
XSSFCellStyle style = workbook.createCellStyle();
XSSFFont font = workbook.createFont();
font.setUnderline(XSSFFont.U_DOUBLE);
font.setColor(IndexedColors.RED.getIndex());
style.setFont(font); /**
* cell中实现URL超链接
*/
sheet.setColumnWidth(2, 4000);
Row row = sheet.createRow(2);
Cell cell = row.createCell(2);
cell.setCellValue("Angel挤一挤的博客");
cell.setCellStyle(style); CreationHelper createHelper = workbook.getCreationHelper();
//实现超链接的类 参数有4.5种,有URL,FILE等不同的类型
XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_URL);
link.setAddress("http://www.cnblogs.com/sxdcgaq8080/");
cell.setHyperlink(link); /**
* cell实现File超链接
*/
XSSFCellStyle style2 = workbook.createCellStyle();
row = sheet.createRow(3);
cell = row.createCell(2);
cell.setCellValue("新建文件夹.txt");
XSSFFont font2 = workbook.createFont();
font2.setColor(HSSFColor.YELLOW.index);
style2.setFont(font2);
cell.setCellStyle(style2);
link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_FILE);
link.setAddress("f:/新建文本.txt");//路径不对,可能会出问题
cell.setHyperlink(link); /**
* cell实现邮箱超链接 注意邮箱的这个address的写法
*/
XSSFCellStyle style3 = workbook.createCellStyle();
row = sheet.createRow(4);
cell = row.createCell(2);
cell.setCellValue("Angel的邮箱");
XSSFFont font3 = workbook.createFont();
font3.setColor(HSSFColor.VIOLET.index);
style3.setFont(font3);
link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
link.setAddress("mailto:18292813417@163.com?"+"subject=Hyperlink");
cell.setHyperlink(link); /**
* cell实现 插入图片
*/
row = sheet.createRow(5);
cell = row.createCell(5);
row.setHeight((short) 1000);
//画图的顶级管理器
XSSFDrawing patriarch = sheet.createDrawingPatriarch();
//为图片管理器配置参数
//参数1 第一个单元格中的x轴坐标
//参数2 第一个单元格中的y轴坐标
//参数3 第二个单元格中的x轴坐标
//参数4 第二个单元格中的y轴坐标
//参数5
//参数6
//参数7
//参数8
XSSFClientAnchor anchor = new XSSFClientAnchor(100, 100, 255, 255, 13, 9, 14, 16);
anchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE); ByteArrayOutputStream byteOutPut = new ByteArrayOutputStream();
//读取到图片信息
BufferedImage bufferImage =ImageIO.read(new File("F:/酷我音乐.png"));
//将图片写入到ByteArrayOutputStream中
ImageIO.write(bufferImage, "png", byteOutPut);
//参数1 代表图片的位置信息 参数2 代表图片来源
patriarch.createPicture(anchor, workbook.addPicture(byteOutPut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG)); /**
* 设置打印区域
*/
//设置哪一个sheet中的第几行到第几行 第几列到第几列
workbook.setPrintArea(0, 1, 9, 1, 10);
//设置纸张大小
sheet.getPrintSetup().setPaperSize(XSSFPrintSetup.A4_PAPERSIZE);
//设置是否显示网格线
sheet.setDisplayGridlines(true);
//设置是否打印网格线
sheet.setPrintGridlines(true); workbook.write(out);
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} }

效果如下:

附录1:其中超链接的类型:Hyperlink的常量

附录2:设置图片的处理效果:

anchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE);

其实就是下面的这几个意思:

附录3:如果new XSSFClientAnchor(100, 100, 255, 255, 13, 9, 14, 16);其中的放置图片的时候,如果图片的右下角的坐标小于左上角的坐标的时候,会发生一下的情况:

【POI】使用POI处理xlsx的cell中的超链接 和 插入图片 和 设置打印区域的更多相关文章

  1. VS2012中MFC 操作mshflexgrid插入图片

    CPictureHolder pic,picSection; pic.CreateFromBitmap(IDB_BITMAP); LPDISPATCH pPic = pic.GetPictureDis ...

  2. NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败

    众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...

  3. java POI实现向Excel中插入图片

          做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片, ...

  4. java 在Excel中插入图片 POI实现

    一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...

  5. 使用Java POI来选择提取Word文档中的表格信息

    通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...

  6. java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载

    从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...

  7. POI 生成、导出Excel(包含多个sheet)带 图片

    1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...

  8. POI插入图片至Excel使用固定的长宽

    使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格 ...

  9. Java利用poi生成word(包含插入图片,动态表格,行合并)

    转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...

随机推荐

  1. 最牛逼android上的图表库MpChart(三) 条形图

    最牛逼android上的图表库MpChart三 条形图 BarChart条形图介绍 BarChart条形图实例 BarChart效果 最牛逼android上的图表库MpChart(三) 条形图 最近工 ...

  2. C# 串口操作系列(2) -- 入门篇,为什么我的串口程序在关闭串口时候会死锁 ?

    第一篇文章我相信很多人不看都能做的出来,但是,用过微软SerialPort类的人,都遇到过这个尴尬,关闭串口的时候会让软件死锁.天哪,我可不是武断,算了.不要太绝对了.99.9%的人吧,都遇到过这个问 ...

  3. SQL常用命令整理

    1.增加字段 alter table docdsp     add dspcodechar(200)2.删除字段     ALTER TABLE table_NAME DROP COLUMNcolum ...

  4. iOS-JavaScript向WKWebView传值

    一.本地代码所需操作 1.创建viewController并遵守协议 @interface ViewController ()<WKNavigationDelegate,WKScriptMess ...

  5. 【Python升级录】--基础知识

    创建角色成功! 正在载入python........ [python介绍] python是一门动态解释性的强类型定义语言. python的创始人为吉多·范罗苏姆(Guido van Rossum).1 ...

  6. September 27th 2016 Week 40th Tuesday

    Friends are lost by calling too often and calling seldom. 交往过密过疏,都会失去朋友. Please mind your own busine ...

  7. iOS 获取当前展示的页面

    - (UIViewController *)getCurrentVC { UIViewController *result = nil; UIWindow * window = [[UIApplica ...

  8. mysql TIME_WAIT

    http://www.th7.cn/system/lin/201404/53762.shtml http://kerry.blog.51cto.com/172631/105233/ http://ww ...

  9. Pyqt 设置 背景颜色和背景图片、 QPalette 调色板 与QPainter 画板区别 、 不规则图片

    设置 背景颜色和背景图片 首先设置autoFillBackground属性为真然后定义一个QPalette对象设置QPalette对象的背景属性(颜色或图片)最后设置QWidget对象的Palette ...

  10. 解决MYSQL错误:ERROR 1040 (08004): Too many connections

    方法一: show processlist; show variables like 'max_connections'; show global status like 'max_used_conn ...