【POI】使用POI处理xlsx的cell中的超链接 和 插入图片 和 设置打印区域
使用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中的超链接 和 插入图片 和 设置打印区域的更多相关文章
- VS2012中MFC 操作mshflexgrid插入图片
CPictureHolder pic,picSection; pic.CreateFromBitmap(IDB_BITMAP); LPDISPATCH pPic = pic.GetPictureDis ...
- NPOI(2.1.3)向excel中插入图片,xls文档图片插入成功,xlsx文档图片插入失败
众所周知,NPOI对xls和xlsx两个版本的excel文档的操作并没有一个统一的支持, 程序若想兼容这两个版本的操作,必须根据excel版本分别去调用HSSF和XSSF这两套操作库, 之前一直不明白 ...
- java POI实现向Excel中插入图片
做Web开发免不了要与Excel打交道.今天老大给我一个任务-导出Excel.开始想的还是蛮简单的,无非就是查找,构建Excel,response下载即可.但是有一点不同,就是要加入图片, ...
- java 在Excel中插入图片 POI实现
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
- 使用Java POI来选择提取Word文档中的表格信息
通过使用Java POI来提取Word(1992)文档中的表格信息,其中POI支持不同的ms文档类型,在具体操作中需要注意.本文主要是通过POI来提取微软2003文档中的表格信息,具体code如下(事 ...
- java算法面试题:从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 ;读取docx 读取doc 使用poi 相关jar包提集提供下载
从类似如下的文本文件中读取出所有的姓名,并打印出重复的姓名和重复的次数,并按重复次数排序 1,张三,28 2,李四,35 3,张三,28 4,王五,35 5,张三,28 6,李四,35 7,赵六,28 ...
- POI 生成、导出Excel(包含多个sheet)带 图片
1.导入依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</ar ...
- POI插入图片至Excel使用固定的长宽
使用POI在Excel里插入图片,如何使插入的图片使用固定的大小?先介绍原有的两种方式: 一种是指定开始和结尾单元格,然后从头画到尾,相当于平铺 还有一种就是仅指定开始的单元格,图片的大小跟这个单元格 ...
- Java利用poi生成word(包含插入图片,动态表格,行合并)
转(小改): Java利用poi生成word(包含插入图片,动态表格,行合并) 2018年12月20日 09:06:51 wjw_11093010 阅读数:70 Java利用poi生成word(包含插 ...
随机推荐
- DELPHI XE5开发WEB服务器及安卓手机客户端
Xe5开发web服务端和手机客户端 ------------------------------------- Delphi xe5作为最新开发利器,就类似如当年的DELPHI,功能强大,快发速度快, ...
- selenium WebDriver 操作高德地图
String URL="http://www.amap.com/"; WebDriver driver = new FirefoxDriver(profile); driver.g ...
- Java for LintCode 颜色分类
给定一个包含红,白,蓝且长度为n的数组,将数组元素进行分类使相同颜色的元素相邻,并按照红.白.蓝的顺序进行排序. 我们可以使用整数0,1和2分别代表红,白,蓝. 解题思路: Java for Leet ...
- shiro错误总结
今天在做spring+mybatis+springmvc+shiro的时候,报这个错,刚开始以为是shiro登录验证出错,后来,观看一下错误,发现在别的xml中写错了代码,shiro接连着报错,记录一 ...
- Json数据报错
在Json数据解析的时候报错,如下图: 这里的id,code,A1等等,都应该使用双引号,即:"id","code","A1",假如id后面 ...
- -[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3
网络数据解析出现-[__NSCFNumber length]: unrecognized selector sent to instance 0xb0000000000000e3这样的错误,具体 re ...
- September 3rd 2016 Week 36th Saturday
Calculation never made a hero. 举棋不定,难以称雄. We change. We have to. Or we spend the rest of our lives f ...
- mongochef如何链接有权限的mongodb3.x数据库
废话不多说,直接上图: 1.打开mongochef 2.打开的界面是这样的: 3.点击connect,上图红色框中的按钮,不要点下拉三角 4.点击New Connection按钮 5.1:上图标注1, ...
- "稀奇古怪的"delete this
myClass::foo(){ delete this; } .. void func(){ myClass *a = new myClass(); a->foo(); ...
- Cocoapods的安装报错 - Error installing pods:activesupport requires Ruby version >=2.2.2
1.打开终端 2 移除现有 Ruby 默认源 输入以下指令 $gem sources --remove https://rubygems.org/ 3.使用新的源 输入以下指令 $gem source ...