黑马 - poi Excel
发布日期:2021-10-22 18:10:51 浏览次数:5 分类:技术文章

本文共 5833 字,大约阅读时间需要 19 分钟。

 

 

 

 

 

 

 

 

 

 

 

 3.poi入门操作

  3.1 搭建环境

1 
2
org.apache.poi
3
poi
4
4.1.0
5
6
7
8
org.apache.poi
9
poi-ooxml
10
4.1.0
11
12
13
org.apache.poi
14
poi-ooxml-schemas
15
4.1.0
16

 

 3.4基本操作

 

public class App {    public static void main(String[] args) {        //1.创建工作簿        Workbook wb = new XSSFWorkbook();//2007版        //2.创建sheet        Sheet sheet = wb.createSheet("test");        //3文件流        try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test.xlsx")) {            wb.write(fos);        } catch (IOException e) {            e.printStackTrace();        }    }}

Demo2 设置单元格样式

1 /** 2  * Demo2设置单元格样式 3  */ 4 public class Demo2 { 5     public static void main(String[] args) { 6         //1.创建工作簿 7         Workbook wb = new XSSFWorkbook();//2007版 8         //2.创建sheet 9         Sheet sheet = wb.createSheet("test");10         //创建行对象,参数:索引从0开始11         Row row = sheet.createRow(2);12         //创建单元格对象,索引从0开始13         Cell cell = row.createCell(2);14         cell.setCellValue("才高八斗");15 16         //样式处理17         //创建样式对象18         CellStyle style = wb.createCellStyle();19         style.setBorderTop(BorderStyle.THIN);//上边框20         style.setBorderRight(BorderStyle.THIN);//右边框21         style.setBorderBottom(BorderStyle.THIN);//下边框22         style.setBorderLeft(BorderStyle.THIN);//左边框23 24         //创建字体对象25         Font font = wb.createFont();26         font.setFontName("华文行楷");27         font.setFontHeightInPoints((short) 28);//设置字号28         style.setFont(font);29 30         //行高和列宽31         row.setHeightInPoints(50);//设置行高32         sheet.setColumnWidth(2, 31 * 256);//第三列,设置列宽需要乘以25633 34         //设置水平居中35         style.setAlignment(HorizontalAlignment.CENTER);36         //设置垂直居中37         style.setVerticalAlignment(VerticalAlignment.CENTER);38 39         //向单元格设置样式40         cell.setCellStyle(style);41 42         //3文件流43         try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test3.xlsx")) {44             wb.write(fos);45         } catch (IOException e) {46             e.printStackTrace();47         }48 49     }50 }

 Demo3 在Excel中添加图片

1 /** 2  * Demo3在Excel中添加图片 3  */ 4 public class Demo1 { 5     public static void main(String[] args) throws IOException { 6         //1.创建工作簿 7         Workbook wb = new XSSFWorkbook();//2007版 8         //2.创建sheet 9         Sheet sheet = wb.createSheet("test");10 11         //------------------------------------------------------------12         //1.读取图片流13         FileInputStream fis = new FileInputStream("E:\\poi\\merry.jpg");14 15         //2.转化二进制数组16         byte[] bytes = IOUtils.toByteArray(fis);17         fis.read(bytes);18         //3.向poi内存中添加一张图片,返回图片在图片集合中的索引19         int index = ((XSSFWorkbook) wb).addPicture(bytes, Workbook.PICTURE_TYPE_JPEG);20         //4.绘制图片工具类21         CreationHelper helper = wb.getCreationHelper();22         //5.创建一个绘图对象23         Drawing
drawing = sheet.createDrawingPatriarch();24 //6.创建锚点,设置图片坐标25 ClientAnchor anchor = helper.createClientAnchor();26 //设置图片起始位置27 anchor.setRow1(1);28 anchor.setCol1(1);29 设置图片结束位置30 anchor.setRow2(15);31 anchor.setCol2(15);32 //7.绘制图片33 Picture picture = drawing.createPicture(anchor, index);//图片位置,图片的索引34 // picture.resize();//自适应渲染图片35 //------------------------------------------------------------36 //3文件流37 try (FileOutputStream fos = new FileOutputStream("E:\\poi\\test4.xlsx")) {38 wb.write(fos);39 } catch (IOException e) {40 e.printStackTrace();41 }42 43 }44 }

 加载Excel

/** * Demo4读取Excel并解析 * sheet.getLastRowNum():获取最后一行的索引值 * row.getLastCellNum():获取最后一个单元格的号码 */public class Demo4 {    public static void main(String[] args) throws IOException {        //1.根据Excel文件创建工作簿        Workbook wb = new XSSFWorkbook("E:\\poi\\demo2.xlsx");        //2.获取Sheet        Sheet sheet = wb.getSheetAt(0);        //3.获取sheet中的每一行和每一个单元格        for (int rowNum = 0; rowNum <= sheet.getLastRowNum(); rowNum++) {            Row row = sheet.getRow(rowNum);//根据索引获取每一行            if (row == null){                continue;            }            StringBuilder sb = new StringBuilder();            for (int cellNum = 0; cellNum < row.getLastCellNum(); cellNum++) {                //根据索引获取每一个单元格                Cell cell = row.getCell(cellNum);                if(cell == null){                    continue;                }                //获取每一个单元格的内容                Object value = getCellValue(cell);                sb.append(value).append("-");            }            System.out.println(sb.toString());        }    }    private static Object getCellValue(Cell cell) {        //1.获取单元格的属性类型        CellType cellType = cell.getCellType();        //2.根据单元格的类型获取时间        Object value = null;        switch (cellType) {            case NUMERIC:                if (DateUtil.isCellDateFormatted(cell)) {                    //日期格式                    value = cell.getDateCellValue();                } else {                    value = cell.getNumericCellValue();                }                break;            case STRING:                value = cell.getStringCellValue();                break;            case BOOLEAN:                value = cell.getBooleanCellValue();                break;            case FORMULA://公式类型                value = cell.getCellFormula();                break;            default:                break;        }        return value;    }}

 

转载于:https://www.cnblogs.com/hk-zsg/p/11565475.html

转载地址:https://blog.csdn.net/weixin_30402343/article/details/102315359 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:try - with - resource
下一篇:java POI(二)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月11日 13时45分13秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

上手Pandas,带你玩转数据(1)-- 实例详解pandas数据结构 2019-04-27
上手Pandas,带你玩转数据(2)-- 使用pandas从多种文件中读取数据 2021-06-30
上手Pandas,带你玩转数据(3)-- pandas数据存入文件 2021-06-30
爬虫遇上不让右击、不让F12的网站,该怎么办? 2021-06-30
上手Pandas,带你玩转数据(4)-- 数据清洗 2021-06-30
上手Pandas,带你玩转数据(5)-- 数据转换与数据定位 2021-06-30
上手Pandas,带你玩转数据(6)-- 摆脱对pandas可视化丑图的刻板印象吧 2021-06-30
从零开始,学会Python爬虫不再难!!! -- (1)开篇:初识爬虫,基础铺垫 丨蓄力计划 2021-06-30
从零开始,学会Python爬虫不再难!!! -- (2)承接:解析网页,抓取标签 丨蓄力计划 2021-06-30
AttributeError: module ‘urllib‘ has no attribute ‘quote‘的解决办法 2021-06-30
linux shell — 6.初识 EXT2 文件系统 2021-06-30
Java — String(字符串) 2021-06-30
linux shell — 7.linux 磁盘与文件系统管理 2019-04-27
linux shell — 8.linux 磁盘与文件系统管理(2) 2019-04-27
Java — 事件监听、事件处理 初体验 2019-04-27
linux — Centos 7(第一天) 使用时出现的问题及解决方法 2019-04-27
数据结构 — 图的概述 2019-04-27
Centos 7 上 Eclipse 无法输入中文解决方法 2019-04-27
数据结构 — 图之邻接表存储创建和深度优先遍历 2019-04-27
Centos 7 — Gedit 配色方案 2019-04-27