POI的入门学习笔记

POI的学习笔记

一 创建Excel单元格并且设置数据

1 具体步骤

(1)创建工作簿workbook
(2)创建表单sheet
(3)创建行对象,参数:索引从0开始
(4)创建单元对象,参数:索引从0开始
(5)向单元中写入内容
(6)创建文件流
(7)写入文件

2 代码具体实现
public class CreateExcelTest {

    public static void main(String[] args) throws Exception {
        //(1)创建工作簿workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
        //(2)创建表单sheet
        XSSFSheet sheet = workbook.createSheet("test");
        //(3)创建行对象,参数:索引从0开始
        XSSFRow row = sheet.createRow(2);
        //(4)创建单元对象,参数:索引从0开始
        XSSFCell cell = row.createCell(2);
        //(5)向单元中写入内容
        cell.setCellValue("老司机,快上车");
        //(6)创建文件流
        FileOutputStream fos = new FileOutputStream("D:\\excel\\poi\\test.xlsx");
        //(7)写入文件
        workbook.write(fos);
        fos.close();
    }
}

二 单元格样式处理

1 具体步骤

(1)创建工作簿workbook
(2)创建表单sheet
(3)创建行对象,参数:索引从0开始
(4)创建单元对象,参数:索引从0开始
(5)向单元中写入内容
(6)创建样式对象
(7)创建字体对象
(8)设置行高和列宽以及居中显示
(9)向单元格设置样式
(10)创建文件流
(11)写入文件

2 代码具体实现
public class CreateExcelStyleTest {

    public static void main(String[] args) throws Exception {
        //(1)创建工作簿workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
        //(2)创建表单sheet
        XSSFSheet sheet = workbook.createSheet("test");
        //(3)创建行对象,参数:索引从0开始
        XSSFRow row = sheet.createRow(2);
        //(4)创建单元对象,参数:索引从0开始
        XSSFCell cell = row.createCell(2);
        //(5)向单元中写入内容
        cell.setCellValue("老司机,快上车");
        //(6)创建样式对象
        XSSFCellStyle style = workbook.createCellStyle();
        style.setBorderTop(BorderStyle.THIN);//上边框
        style.setBorderBottom(BorderStyle.THIN);//下边框
        style.setBorderLeft(BorderStyle.THIN);//左边框
        style.setBorderRight(BorderStyle.THIN);//右边框
        //(7)创建字体对象
        XSSFFont font = workbook.createFont();
        font.setFontName("华文行楷");//设置字体
        font.setFontHeightInPoints((short) 28);//设置字号
        font.setColor((short) 12);//设置颜色
        style.setFont(font);
        //(8)设置行高和列宽
        row.setHeightInPoints(50);//行高
        sheet.setColumnWidth(2,31*256);//列宽
        //居中显示
        style.setAlignment(HorizontalAlignment.CENTER);//水平居中
        style.setVerticalAlignment(VerticalAlignment.CENTER);//垂直居中
        //向单元格设置样式
        cell.setCellStyle(style);
        //(9)创建文件流
        FileOutputStream fos = new FileOutputStream("D:\\excel\\poi\\style.xlsx");
        //(10)写入文件
        workbook.write(fos);
        fos.close();
    }
}

三 绘制图形

1 具体步骤

(1)创建工作簿workbook
(2)创建表单sheet
(3)读取图片流
(4)转换为二进制数组
(5)向POI内存中添加一种图片,返回图片在图片集合中的索引
(6)绘制图片工具类
(7)创建一个绘图对象
(8)创建描点,设置图片坐标
(9)绘制图片
(10)创建文件流
(11)写入文件

2 代码具体实现
public class CreatePictureTest {

    public static void main(String[] args) throws Exception {
        //(1)创建工作簿workbook
        XSSFWorkbook workbook = new XSSFWorkbook();
        //(2)创建表单sheet
        XSSFSheet sheet = workbook.createSheet("创建picture");
        //(3)读取图片流
        FileInputStream fis = new FileInputStream("D:\\excel\\poi\\picture.jpg");
        //(4)转换为二进制数组
        byte[] bytes = IOUtils.toByteArray(fis);
        fis.read(bytes);
        //(5)向POI内存中添加一种图片,返回图片在图片集合中的索引
        int index = workbook.addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);
        //(6)绘制图片工具类
        XSSFCreationHelper helper = workbook.getCreationHelper();
        //(7)创建一个绘图对象
        XSSFDrawing patriarch = sheet.createDrawingPatriarch();
        //(8)创建描点,设置图片坐标
        XSSFClientAnchor anchor = helper.createClientAnchor();
        anchor.setRow1(0);
        anchor.setCol1(0);
        //(9)绘制图片
        XSSFPicture picture = patriarch.createPicture(anchor, index);
        picture.resize();//图片自适应
        //(10)创建文件流
        FileOutputStream fos = new FileOutputStream("D:\\excel\\poi\\picture.xlsx");
        //(11)写入文件
        workbook.write(fos);
        fos.close();
    }
}

四 加载解析Excel

1 具体步骤

(1)根据Excell文件创建工作簿
(2)获取sheet
(3)获取sheet中的每一行,和每一个单元格
(4)获取单元格的属性类型

2 代码具体实现
public class ParseExcelTest {

    //sheet.getLastRowNum() 返回最后一行的下标
    //row.getLastCellNum() 返回单元格的列号
    public static void main(String[] args) throws Exception {
        //(1)创建工作簿workbook
        XSSFWorkbook workbook = new XSSFWorkbook("D:\\excel\\poi\\test.xlsx");
        //(2)获取表单sheet
        XSSFSheet sheet = workbook.getSheetAt(0);
        //(3)获取sheet中的每一行和每一个单元格
        for (int rowNum=0; rowNum <= sheet.getLastRowNum(); rowNum++ ){
            StringBuilder sb = new StringBuilder();
            //获取每一行
            XSSFRow row = sheet.getRow(rowNum);
            for (int cellNum=0; cellNum < row.getLastCellNum(); cellNum++){
                XSSFCell cell = row.getCell(cellNum);//获取列
                Object value = getCellValue(cell);
                sb.append(value).append("-");
            }
            System.out.println(sb.toString());
        }
    }
    public static Object getCellValue(Cell cell){
        //获取单元格的属性类型
        CellType cellType = cell.getCellType();
        //根据单元格数据类型获取数据
        Object value = null;
        switch (cellType){
            case STRING://字符串
                value = cell.getStringCellValue();
                break;
            case BOOLEAN://布尔
                value = cell.getBooleanCellValue();
                break;
            case NUMERIC:
                if (DateUtil.isCellDateFormatted(cell))//日期
                    value = cell.getDateCellValue();
                else //数字
                    value = cell.getNumericCellValue();
                break;
            case FORMULA://公式
                value = cell.getCellFormula();
                break;
            default:
                break;
        }
        return value;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值