`

Java lib 操作 excel 插入图片

阅读更多
https://poi.apache.org/components/spreadsheet/quick-guide.html


1、添加依赖(Maven)

https://mvnrepository.com/artifact/org.apache.poi/poi


		<dependency>
		    <groupId>org.apache.poi</groupId>
		    <artifactId>poi</artifactId>
		    <version>4.0.0</version>
		</dependency>



代码实现:


import java.awt.image.BufferedImage;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;

import javax.imageio.ImageIO;

import org.apache.poi.hssf.usermodel.HSSFClientAnchor;
import org.apache.poi.hssf.usermodel.HSSFPatriarch;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.BorderStyle;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.FillPatternType;
import org.apache.poi.ss.usermodel.Font;
import org.apache.poi.ss.usermodel.HorizontalAlignment;
import org.apache.poi.ss.usermodel.IndexedColors;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.VerticalAlignment;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.util.CellRangeAddress;
import org.apache.poi.ss.util.WorkbookUtil;

// https://poi.apache.org/components/spreadsheet/quick-guide.html

public class Excel_01_Basic {
    
    private static String BASE_PATH = "/Users/tiger/Documents/";
    
    private static String FILE_NAME;
    
    private HSSFWorkbook workBook;
   
    public void createWorkBook() throws Exception{
        
        workBook = new HSSFWorkbook();
        
      //============  header ===================================================
        HSSFSheet sheet = workBook.createSheet("2019 Products");
       
        //------------------ 设置列宽
        
        sheet.setColumnWidth(0, 24 * 256); // 24 个字符
        
        
        
        
        //-------------------- 设置行高
        
        Row row = sheet.createRow(2);
        row.setHeightInPoints(30);

        /**
         * HorizontalAlignment.CENTER - one cell
         * HorizontalAlignment.CENTER_SELECTION - multiple cell
         */
        createCell(workBook, row, 0, HorizontalAlignment.CENTER, VerticalAlignment.BOTTOM);
        createCell(workBook, row, 1, HorizontalAlignment.CENTER_SELECTION, VerticalAlignment.BOTTOM);
        
        /**
         * HorizontalAlignment.FILL - left
         * HorizontalAlignment.GENERAL - left
         */
        createCell(workBook, row, 2, HorizontalAlignment.FILL, VerticalAlignment.CENTER);
        createCell(workBook, row, 3, HorizontalAlignment.GENERAL, VerticalAlignment.CENTER);
        
        createCell(workBook, row, 4, HorizontalAlignment.JUSTIFY, VerticalAlignment.JUSTIFY);
        createCell(workBook, row, 5, HorizontalAlignment.LEFT, VerticalAlignment.TOP);
        createCell(workBook, row, 6, HorizontalAlignment.RIGHT, VerticalAlignment.TOP);
        
        
        
        //------------------------------ Cell2
        
        // merging cells
        int rowIndex = 4;
        Row row2 = sheet.createRow(rowIndex);
        
        Cell cell2 = row2.createCell(1);
        cell2.setCellValue("This is a test of merging");
        
        CellStyle style2 = workBook.createCellStyle();
       
        //------------------------------ Cell Merging
        
        sheet.addMergedRegion(new CellRangeAddress(
                rowIndex, //first row (0-based)
                rowIndex, //last row  (0-based)
                1, //first column (0-based)
                8  //last column  (0-based)
        ));
        
        
        //------------------------------- Heights
        row2.setHeightInPoints(141);
        
        //------------------------------- Fonts
        // Note, the maximum number of unique fonts in a workbook is limited to 32767. 
        // You should re-use fonts in your applications instead of creating a font for each cell. 
        //

        Font font_30 = workBook.createFont();
        font_30.setFontHeightInPoints((short)30);
        font_30.setFontName("Courier New");
        font_30.setItalic(true);
        font_30.setStrikeout(true);
        
        style2.setFont(font_30);
        
        cell2.setCellStyle(style2);
        
        //--------------------------------- Picture
        
        Row row0 = sheet.createRow(0);
        row0.setHeightInPoints(180);
        
        Row row1 = sheet.createRow(1);
        row1.setHeightInPoints(180);
        
        ByteArrayOutputStream byteArrayOut = new ByteArrayOutputStream();     // 先把读进来的图片放到一个ByteArrayOutputStream中,以便产生ByteArray
        BufferedImage bufferImg = ImageIO.read(new File("/Users/tiger/Downloads/2018-11-28_16-56-28-node.jpg")); //将图片读到BufferedImage 
        ImageIO.write(bufferImg, "png", byteArrayOut); // 将图片写入流中  
        
        
     // 利用HSSFPatriarch将图片写入EXCEL  
        HSSFPatriarch patriarch = sheet.createDrawingPatriarch();  
        /**
         * 该构造函数有8个参数
         * 前四个参数是控制图片在单元格的位置,分别是图片距离单元格left,top,right,bottom的像素距离
         * 后四个参数,前连个表示图片左上角所在的columnNum和 rowNum,后天个参数对应的表示图片右下角所在的columnNum和rowNum,
         * excel中的columnNum和rowNum的index都是从0开始的
         *  
         */  
        HSSFClientAnchor anchor0 = new HSSFClientAnchor(0, 0, 950, 245 ,  
                (short) 0, 0, (short)0, 0);
        // 插入图片  
        patriarch.createPicture(anchor0, workBook.addPicture(byteArrayOut  
                .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));  
        
        //图片一导出到单元格B2中  
        HSSFClientAnchor anchor1 = new HSSFClientAnchor(0, 0, 950, 245,  
                (short) 0, 1, (short) 0, 1);
        // 插入图片  
        patriarch.createPicture(anchor1, workBook.addPicture(byteArrayOut  
                .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG));  
              
        byteArrayOut.close();
        
        //============  footer ===================================================
        
        
        
        
        String safeName = WorkbookUtil.createSafeSheetName("workbook.xls");
        FILE_NAME = BASE_PATH + safeName;
        try  ( OutputStream fileOut = new FileOutputStream(FILE_NAME) ) {
            workBook.write(fileOut);
        }
    }

    /**
     * Creates a cell and aligns it a certain way.
     *
     * @param wb     the workbook
     * @param row    the row to create the cell in
     * @param column the column number to create the cell in
     * @param halign the horizontal alignment for the cell.
     * @param valign the vertical alignment for the cell.
     */
    private void createCell(Workbook wb, Row row, int column, HorizontalAlignment halign, VerticalAlignment valign) {
        Cell cell = row.createCell(column);
        
        cell.setCellValue("Align It");
        
        CellStyle cellStyle = wb.createCellStyle();
        
        // set alignment
        cellStyle.setAlignment(halign);
        cellStyle.setVerticalAlignment(valign);

        // set borders
        cellStyle.setBorderBottom(BorderStyle.THIN);
        cellStyle.setBottomBorderColor(IndexedColors.BLACK.getIndex());
        
        cellStyle.setBorderLeft(BorderStyle.THIN);
        cellStyle.setLeftBorderColor(IndexedColors.GREEN.getIndex());
        
        cellStyle.setBorderRight(BorderStyle.THIN);
        cellStyle.setRightBorderColor(IndexedColors.BLUE.getIndex());
        
        cellStyle.setBorderTop(BorderStyle.MEDIUM_DASHED);
        cellStyle.setTopBorderColor(IndexedColors.BLACK.getIndex());
        
        // set background color // Aqua background
        // cellStyle.setFillBackgroundColor(IndexedColors.AQUA.getIndex());
        // cellStyle.setFillPattern(FillPatternType.BIG_SPOTS);
        
        // set // Orange "foreground", foreground being the fill foreground not the font color.
        cellStyle.setFillForegroundColor(IndexedColors.ORANGE.getIndex());
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        
        //
        cell.setCellStyle(cellStyle);
    }
    
    
    
    public static void main(String[] args) {
        Excel_01_Basic excelWorkBook = new Excel_01_Basic();
        try {
            excelWorkBook.createWorkBook();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("excel is created successfully!");
        System.out.printf("file path = %s\n", FILE_NAME);
        
        System.out.println("Working Directory = " +
                System.getProperty("user.dir"));
    }

}












转载请注明,
原文出处:https://lixh1986.iteye.com/blog/2436814























-
  • 大小: 165.1 KB
  • 大小: 165.1 KB
分享到:
评论

相关推荐

    最新POI Lib Java Excel转换成Txt

    Apache POI是一个开源的Java读写Excel、WORD等微软OLE2组件文档的项目。目前POI已经有了Ruby版本。 结构: •HSSF - 提供读写Microsoft Excel XLS格式档案的功能。 •XSSF - 提供读写Microsoft Excel OOXML XLSX...

    JavaLib-result是开源工具JavaLib的子模块主要是对接口结果规范处理

    JavaLib-result是开源工具JavaLib的子模块,主要是对接口结果规范处理

    java lib(整合)

    整合的java 库 整合的java 库 整合的java 库 整合的java 库

    java Excel工具类与LIB

    花了半天整理的,创建与读取EXCEL只需一行或很少量代码。 将EXCEL自动转成JAVA对象等均可以。 附件包括源码与架包,下载后放在项目中就可运行, 适当去掉我调用的异常处理即可。

    通过java操作excel表格的工具类库

    将下载后的文件解包,得到JXL.JAR,放入classpath,...如果包不能正常的加载,可以把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。

    java excel操作 poi-3.17 可用于jdk1.70

    附件是java poi 3.17的lib库及其依赖库,全部下载引用后,可以进行excel的读写操作,无需引用其他lib库。poi-3.17适用于jdk1.7。 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft ...

    Java常用lib

    Java常用lib

    JAVA POI 4.0 对Excel读写整理LIB以及样例工程

    针对使用JAVA POI 4.0的Jar包进行了整理,提取了必要的jar整理打包LIb,并提供了 对Excel读写整理的可运行全工程。同类POI版本最高,最便宜的

    lib_javalib_ide_

    JAVA 辅助文件,帮助流畅运行JAVA

    java POI-lib,word中写入图片

    通过POI将图片插入word文档中,写文字就简单了自己摸索

    java lib-jar

    在平时的开发中,收集的java-jars,在这个资源中有187个javajars,提供给java开发人员使用

    Javalib.jar

    适用于java初学者,刚开始学时候用,尤其是netbeans,对于海外学生很实用

    java2Word操作Word,比如插入图片和替换文本

    java2Word操作Word,比如插入图片和替换文本,压缩文件中有【lib和exe】文件夹和[java2Word]项目代码,网上都不完整,本人对其进行完全整合,新手解压后按readme.txt文件操作说明可以使用

    【Java】基于TA-Lib量化分析研究.pdf

    近期项目中有需要构建一个量化分析模块,能够实现常规的...本次给客户开发的平台都是基于J2EE开发的,所以采用了TA-Lib的Java版本JAR进行开发(主要是开发人员都是Java,项目组没有Python ,否则应该使用更加方便)。

    excel lib

    excel lib

    oracle10g-java lib

    oracle10g-java lib oracle10g-java lib

    java开发整合的最全的lib

    java开发整合的最全的lib 此为lib.part1 还有lib.part2

    java读excel文件

    实现java读excel 功能,压缩包中带有第三方jar包,直接加到工程lib里就可以了

    Java读写Excel的jar包

     通过java操作excel表格的工具类库  支持Excel 95-2000的所有版本  生成Excel 2000标准格式  支持字体、数字、日期操作  能够修饰单元格属性  支持图像和图表  应该说以上功能已经能够大致满足我们的需要。最...

    java生成word,包括word表格,表格插入图片,jar包都在了

    第一次传的时候少了实体类,这次代码传全了,连jar包都给大家准备好了,jar包导入WebRoot的WEB-INF的lib下三个类全部导入,自己准备几张图片,取好名字放在D盘,就可以用了

Global site tag (gtag.js) - Google Analytics