zoukankan      html  css  js  c++  java
  • 【POI】使用POI处理xlsx的cell中的超链接 和 插入图片 和 设置打印区域

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

      1 package com.it.poiTest;
      2 
      3 import java.awt.image.BufferedImage;
      4 import java.io.ByteArrayOutputStream;
      5 import java.io.File;
      6 import java.io.FileNotFoundException;
      7 import java.io.FileOutputStream;
      8 import java.io.IOException;
      9 
     10 import javax.imageio.ImageIO;
     11 
     12 import org.apache.poi.common.usermodel.Hyperlink;
     13 import org.apache.poi.hslf.examples.CreateHyperlink;
     14 import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
     15 import org.apache.poi.hssf.usermodel.HSSFPatriarch;
     16 import org.apache.poi.hssf.util.HSSFColor;
     17 import org.apache.poi.ss.usermodel.Cell;
     18 import org.apache.poi.ss.usermodel.ClientAnchor.AnchorType;
     19 import org.apache.poi.ss.usermodel.CreationHelper;
     20 import org.apache.poi.ss.usermodel.IndexedColors;
     21 import org.apache.poi.ss.usermodel.Row;
     22 import org.apache.poi.xssf.usermodel.XSSFCellStyle;
     23 import org.apache.poi.xssf.usermodel.XSSFClientAnchor;
     24 import org.apache.poi.xssf.usermodel.XSSFDrawing;
     25 import org.apache.poi.xssf.usermodel.XSSFFont;
     26 import org.apache.poi.xssf.usermodel.XSSFHyperlink;
     27 import org.apache.poi.xssf.usermodel.XSSFPicture;
     28 import org.apache.poi.xssf.usermodel.XSSFPrintSetup;
     29 import org.apache.poi.xssf.usermodel.XSSFSheet;
     30 import org.apache.poi.xssf.usermodel.XSSFWorkbook;
     31 
     32 public class AddPhotoUrl {
     33 
     34     public static void main(String[] args) {
     35         XSSFWorkbook workbook = new XSSFWorkbook();
     36         try {
     37             FileOutputStream out = new FileOutputStream("AddPhotoUrl.xlsx");
     38             XSSFSheet sheet = workbook.createSheet("1");
     39             XSSFCellStyle style = workbook.createCellStyle();
     40             XSSFFont font = workbook.createFont();
     41             font.setUnderline(XSSFFont.U_DOUBLE);
     42             font.setColor(IndexedColors.RED.getIndex());
     43             style.setFont(font);
     44             
     45             
     46             /**
     47              * cell中实现URL超链接
     48              */
     49             sheet.setColumnWidth(2, 4000);
     50             Row row = sheet.createRow(2);
     51             Cell cell = row.createCell(2);
     52             cell.setCellValue("Angel挤一挤的博客");
     53             cell.setCellStyle(style);
     54             
     55             
     56             CreationHelper createHelper = workbook.getCreationHelper();
     57             //实现超链接的类                                                        参数有4.5种,有URL,FILE等不同的类型
     58             XSSFHyperlink link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_URL);
     59             link.setAddress("http://www.cnblogs.com/sxdcgaq8080/");
     60             cell.setHyperlink(link);
     61             
     62             
     63             /**
     64              * cell实现File超链接
     65              */
     66             XSSFCellStyle style2 = workbook.createCellStyle();
     67             row = sheet.createRow(3);
     68             cell = row.createCell(2);
     69             cell.setCellValue("新建文件夹.txt");
     70             XSSFFont font2 = workbook.createFont();
     71             font2.setColor(HSSFColor.YELLOW.index);
     72             style2.setFont(font2);
     73             cell.setCellStyle(style2);
     74             link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_FILE);
     75             link.setAddress("f:/新建文本.txt");//路径不对,可能会出问题
     76             cell.setHyperlink(link);
     77             
     78             
     79             /**
     80              * cell实现邮箱超链接   注意邮箱的这个address的写法
     81              */
     82             XSSFCellStyle style3 = workbook.createCellStyle();
     83             row = sheet.createRow(4);
     84             cell = row.createCell(2);
     85             cell.setCellValue("Angel的邮箱");
     86             XSSFFont font3 = workbook.createFont();
     87             font3.setColor(HSSFColor.VIOLET.index);
     88             style3.setFont(font3);
     89             link = (XSSFHyperlink) createHelper.createHyperlink(Hyperlink.LINK_EMAIL);
     90             link.setAddress("mailto:18292813417@163.com?"+"subject=Hyperlink");
     91             cell.setHyperlink(link);
     92             
     93     
     94             
     95             /**
     96              * cell实现 插入图片
     97              */
     98             row = sheet.createRow(5);
     99             cell = row.createCell(5);
    100             row.setHeight((short) 1000);
    101             //画图的顶级管理器
    102             XSSFDrawing patriarch = sheet.createDrawingPatriarch();
    103             //为图片管理器配置参数  
    104             //参数1  第一个单元格中的x轴坐标
    105             //参数2 第一个单元格中的y轴坐标
    106             //参数3 第二个单元格中的x轴坐标
    107             //参数4 第二个单元格中的y轴坐标
    108             //参数5
    109             //参数6
    110             //参数7
    111             //参数8   
    112             XSSFClientAnchor anchor = new XSSFClientAnchor(100, 100, 255, 255, 13, 9, 14, 16);
    113             anchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE);
    114             
    115             
    116             ByteArrayOutputStream byteOutPut = new ByteArrayOutputStream();
    117             //读取到图片信息
    118             BufferedImage  bufferImage =ImageIO.read(new File("F:/酷我音乐.png"));
    119             //将图片写入到ByteArrayOutputStream中
    120             ImageIO.write(bufferImage, "png", byteOutPut);
    121             //参数1 代表图片的位置信息               参数2 代表图片来源
    122             patriarch.createPicture(anchor, workbook.addPicture(byteOutPut.toByteArray(), XSSFWorkbook.PICTURE_TYPE_PNG));
    123             
    124             
    125             /**
    126              * 设置打印区域
    127              */
    128             //设置哪一个sheet中的第几行到第几行  第几列到第几列
    129             workbook.setPrintArea(0, 1, 9, 1, 10);
    130             //设置纸张大小
    131             sheet.getPrintSetup().setPaperSize(XSSFPrintSetup.A4_PAPERSIZE);
    132             //设置是否显示网格线
    133             sheet.setDisplayGridlines(true);
    134             //设置是否打印网格线
    135             sheet.setPrintGridlines(true);
    136             
    137             
    138             workbook.write(out);
    139             out.close();
    140         } catch (FileNotFoundException e) {
    141             e.printStackTrace();
    142         } catch (IOException e) {
    143             e.printStackTrace();
    144         }
    145     }
    146 
    147 }
    View Code

    效果如下:

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

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

    anchor.setAnchorType(AnchorType.DONT_MOVE_DO_RESIZE);

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

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

  • 相关阅读:
    2-4安卓自学
    2-3安卓自学
    2-2安卓自学
    2-1安卓自学
    20210121 Sqlit数据库
    20210119 Sqlit数据库
    20210118 android学习
    20210117 android学习
    20210115 android学习
    20210114 android学习
  • 原文地址:https://www.cnblogs.com/sxdcgaq8080/p/5670392.html
Copyright © 2011-2022 走看看