报表读写 - POI概述

报表读写 - POI

报表:简单的说,报表就是用表格、图表等格式来动态显示数据,可以用公式表示为:“报表 = 多样的格式 + 动态的数据”。

报表的种类有很多:Excel报表,PDF报表,网页报表等,他们各有优缺点

报表读写 - POI概述

在本课程中,我们主要来将Excel报表。

对于Excel报表的技术实现上也有很多种选择:

  • JXL:支持xls文件操作
  • POI:支持xls和xlsx文件操作

我们只要来讲POI技术,要使用POI就要导入其坐标,如下

<!--POI-->
<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>

1.1 POI写Excel文件

在测试包下创建POI测试类:com.itheima.service.store.PoiTest

public class PoiTest {

    @Test
    public void testWriteByPoi() throws IOException {
        //1.获取到对应的Excel文件,工作簿文件
        Workbook wb = new XSSFWorkbook();
        //2.创建工作表
        Sheet sheet = wb.createSheet();
        wb.createSheet("这是啥呀");

        //3.创建工作表中的行对象
        Row row = sheet.createRow(1);
        //4.创建工作表中行中的列对象
        Cell cell = row.createCell(1);
        //5.在列中写数据
        cell.setCellValue("测试一下单元格");

        //创建一个文件对象,作为excel文件内容的输出文件
        File f = new File("test.xlsx");
        //输出时通过流的形式对外输出,包装对应的目标文件
        OutputStream os = new FileOutputStream(f);
        //将内存中的workbook数据写入到流中
        wb.write(os);
        wb.close();
        os.close();
    }
}

使用单元测试进行测试!

1.2 POI读Excel文件

创建读Excel的测试方法:testReadByPoi

@Test
public void testReadByPoi() throws IOException {
    //1.获取要读取的文件工作簿对象
    Workbook wb = new XSSFWorkbook("test.xlsx");
    //2.获取工作表
    Sheet s = wb.getSheetAt(0);
    //3.获取行
    Row row = s.getRow(3);
    //4.获取列
    Cell cell = row.getCell(1);
    //5.根据数据的类型获取数据
    //        String data = cell.getStringCellValue();
    //        double data = cell.getNumericCellValue();
    boolean data = cell.getBooleanCellValue();

    System.out.println(data);

    wb.close();
}

直接读取第一节创建好的Excel文件

上一篇:【转】openpyxl模块


下一篇:python3 生成excel(csv/xls/xlsx)