poi基础篇:1导出基础知识

1、环境搭建及说明

1.1、poi结构说明

HSSF提供读写Microsoft Excel XLS格式档案的功能。
XSSF提供读写Microsoft Excel OOXML XLSX格式档案的功能。

HWPF提供读写Microsoft Word DOC格式档案的功能。
HSLF提供读写Microsoft PowerPoint格式档案的功能。
HDGF提供读Microsoft Visio格式档案的功能。
HPBF提供读Microsoft Publisher格式档案的功能。
HSMF提供读Microsoft Outlook格式档案的功能。

1.2、poi的maven坐标

  <!--poi start -->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml-schemas</artifactId>
            <version>4.0.1</version>
        </dependency>
        <!--poi end -->

1.3、poi的API说明

API名称 说明
Workbook Excel文档对象,针对不同的excel类型分为HSSFWorkbook(2003)和XSSFWorkbool(2007)
Sheet excel的表单
Row excel中的行
Cell excel中单元格
Font excel字体
CellStyle 单元格样式

2.2、POI导出基本操作

2.1、创建Excel

    /**
     * 创建Excel
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //1.创建workbook工作簿
        Workbook wb=new XSSFWorkbook();
        //2.创建表单sheet
        Sheet sheet = wb.createSheet("mysheet");
        //3.文件流
        FileOutputStream fos=new FileOutputStream("d:\\test.xlsx");
        //4.文件写入
        wb.write(fos);
        fos.close();
    }

2.2、创建单元格

/**
     *场景Excel
     * @param args
     */
    public static void main(String[] args) throws Exception {
      //1.创建workbook工作簿
        Workbook wb=new XSSFWorkbook();
      //2.创建表达sheet
        Sheet sheet=wb.createSheet("mysheet1");
        // 3.创建行对象,从0开始
        Row row=sheet.createRow(3); //第四行
        // 4.创建单元格,从0开始
        Cell cell=row.createCell(2);//第3列
        //5.单元格写入数据
        cell.setCellValue("河南万庄");
        FileOutputStream fos=new FileOutputStream("d:\\test2.xlsx");
        //6.文件写入
        wb.write(fos);
        fos.close();
    }

2.3、设置单元格式

/**
     * 设置格式
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //1.创建workbook工作簿
        Workbook wb=new XSSFWorkbook();
        //2.创建表达sheet
        Sheet sheet=wb.createSheet("mysheet1");
        // 3.创建行对象,从0开始
        Row row=sheet.createRow(2);
        // 4.创建单元格,从0开始
        Cell cell=row.createCell(2);
        //5.单元格写入数据
        cell.setCellValue("中国南京");
        //6.创建单元格样式对象
        CellStyle style=wb.createCellStyle();
        //6.1设置边框
        style.setBorderBottom(BorderStyle.DASH_DOT);//下边框
        style.setBorderTop(BorderStyle.THIN);//上边框
        style.setBorderLeft(BorderStyle.THIN);//左边框
        style.setBorderRight(BorderStyle.THIN);//右边框
        //6.2设置字体
        Font font=wb.createFont(); //创建字体对象
        font.setFontName("华文行楷");//设置字体名
        font.setFontHeightInPoints((short)28);//设置字体大小
        style.setFont(font);
        //6.3设置宽度
        sheet.setColumnWidth(2,31*256);//设置第3列的宽度是31个字符宽度
        row.setHeightInPoints(50);//设置行的高度是50点
        //6.4设置居中显示
        style.setAlignment(HorizontalAlignment.CENTER);//水平居中
        style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        //6.5 设置单元格样式
        cell.setCellStyle(style);

        //6.6 合并单元格
        // CellRangeAddress参数: firstRow表示第几行开始合并,lastRow表示第几行结束合并,
        // CellRangeAddress参数:firstCol从第几列开始合并,lastCol从第几列结束合并
        CellRangeAddress region =new CellRangeAddress(3, 4, 4, 6);
        sheet.addMergedRegion(region);

        FileOutputStream fos=new FileOutputStream("d:\\test3.xlsx");
        //8.文件写入
        wb.write(fos);
        fos.close();
    }

2.4、excel中绘图

/**
     * excel中绘制图片
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {
        //1.创建workbook工作簿
        Workbook wb=new XSSFWorkbook();
        //2.创建表单sheet
        Sheet sheet = wb.createSheet("mysheet");
        //3.处理图片
        //3.1 读取图片流
        FileInputStream fis=new FileInputStream("D:\\logo.png");
        //3.2 转化二进制数组,IOUtils是POI包提供的
        byte[] bytes = IOUtils.toByteArray(fis);
        fis.read();
        //3.3.向POI内存中添加一张图片,返回图片在图片集合中的索引
        int index = wb.addPicture(bytes, Workbook.PICTURE_TYPE_PNG);//参数一:图片的二进制数据,参数二:图片类型
       //3.4.绘制图片工具类
        CreationHelper helper = wb.getCreationHelper();
        //3.5创建一个绘图对象
        Drawing<?> patriarch = sheet.createDrawingPatriarch();
        //3.6设置图片的坐标
        ClientAnchor anchor = helper.createClientAnchor();
        anchor.setRow1(0);//图片从第几行开始
        anchor.setCol1(0);//图片从第几列开始
         //3.7绘制图片
        Picture picture = patriarch.createPicture(anchor, index);//参数1:图片位置 参数2:图片索引
        picture.resize();//渲染图片,自适应图片
        //4.文件流
        FileOutputStream fos=new FileOutputStream("d:\\test5.xlsx");
        //5.文件写入
        wb.write(fos);
        fos.close();
    }

猜你喜欢

转载自blog.csdn.net/u013089490/article/details/88527571