java中POI是什么意思?Excel基本操作展示

BSO 2020-09-10 09:40:06 java常见问答 7347

在我们学习java的过程中可以发现,java是门内容极其丰富庞大的编程语言,很难完全地掌握它,需要使用者不断地汲取新知识充实自身。今天就来为大家介绍一下java中POI的含义以及Excel基本操作展示。

首先来了解一下POI。

Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。另外,HSSF是Horrible SpreadSheet Format的缩写,通过HSSF,我们可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventusermodel,即“用户模型”和“事件-用户模型”。

接下来再来看一下,Excel基本操作,主要包括下面几个步骤。

1.得到Excel常用对象,代码如下所示:

//获得Excel对象
@Test
public void testExcel1()
{
    try
    {
        //获取系统文档
        POIFSFileSystem fspoi = new POIFSFileSystem(new FileInputStream("/Users/wangjun/temp/demo1.xls"));
        //创建工作薄对象
        HSSFWorkbook workbook = new HSSFWorkbook(fspoi);
        //创建工作表对象
        HSSFSheet sheet = workbook.getSheet("sheet1");
        //得到Excel表格
        HSSFRow row = sheet.getRow(1);
        //得到Excel工作表指定行的单元格
        HSSFCell cell = row.getCell(1);
        System.out.println(cell);
    }
    catch (IOException e)
    {
        e.printStackTrace();
    }
}

2.创建Excel文档,代码如下所示:

//创建Excel对象
@Test
public void testExcel2() throws IOException
{
    //创建工作薄对象
    HSSFWorkbook workbook = new HSSFWorkbook(); //这里也可以设置sheet的Name
    //创建工作表对象
    HSSFSheet sheet = workbook.createSheet();
    //创建工作表的行
    HSSFRow row = sheet.createRow(0); //设置第一行,从零开始
    row.createCell(2)
        .setCellValue("aaaaaaaaaaaa"); //第一行第三列为aaaaaaaaaaaa
    row.createCell(0)
        .setCellValue(new Date()); //第一行第一列为日期
    workbook.setSheetName(0, "sheet的Name"); //设置sheet的Name
    //文档输出
    FileOutputStream out = new FileOutputStream("/Users/wangjun/temp/" + new SimpleDateFormat("yyyyMMddHHmmss")
        .format(new Date())
        .toString() + ".xls");
    workbook.write(out);
    out.close();
}

3.创建Excel文档,添加摘要信息,代码如下所示:

   //创建文档摘要信息
   @Test
   public void testExcel3() throws IOException
   {
       //创建HSSFWorkbook工作薄对象
       HSSFWorkbook workbook = new HSSFWorkbook();
       //创建HSSFSheet对象
       HSSFSheet sheet = workbook.createSheet("sheet1");
       //创建行的单元格,从0开始
       HSSFRow row = sheet.createRow(0);
       //创建单元格,从0开始
       HSSFCell cell = row.createCell(0);
       cell.setCellValue("a");
       //一下为简写
       row.createCell(1)
           .setCellValue("aa");
       row.createCell(2)
           .setCellValue("aaa");
       row.createCell(3)
           .setCellValue("aaaa");
       //创建文档信息
       workbook.createInformationProperties();
       //获取DocumentSummaryInformation对象
       DocumentSummaryInformation documentSummaryInformation = workbook.getDocumentSummaryInformation();
       documentSummaryInformation.setCategory("类别:Excel文件"); //类别
       documentSummaryInformation.setManager("管理者:王军"); //管理者
       documentSummaryInformation.setCompany("公司:Action"); //公司
       //文档输出
       FileOutputStream out = new FileOutputStream("/Users/wangjun/temp/" + new SimpleDateFormat("yyyyMMddHHmmss")
           .format(new Date())
           .toString() + ".xls");
       workbook.write(out);
       out.close();
   }

4.创建批注,代码如下所示:

   //创建批注
   @Test
   public void testExcel4() throws IOException
   {
       //创建Excel工作薄对象
       HSSFWorkbook workbook = new HSSFWorkbook();
       //创建Excel工作表对象
       HSSFSheet sheet = workbook.createSheet("wj");
       HSSFPatriarch patr = sheet.createDrawingPatriarch();
       //创建批注位置(row1-row3:直接理解为高度,col1-col2:直接理解为宽度)
       HSSFClientAnchor anchor = patr.createAnchor(0, 0, 0, 0, 5, 1, 8, 3);
       //创建批注
       HSSFComment comment = patr.createCellComment(anchor);
       //设置批注内容
       comment.setString(new HSSFRichTextString("这是一个批注段落!"));
       //设置批注作者
       comment.setAuthor("wangjun");
       //设置批注默认显示
       comment.setVisible(true);
       HSSFCell cell = sheet.createRow(2)
           .createCell(1);
       cell.setCellValue("测试");
       //把批注赋值给单元格
       cell.setCellComment(comment);
       //文档输出
       FileOutputStream out = new FileOutputStream("/Users/wangjun/temp/" + new SimpleDateFormat("yyyyMMddHHmmss")
           .format(new Date())
           .toString() + ".xls");
       workbook.write(out);
       out.close();
   }

另外补充一些创建批注位置HSSFPatriarch.createAnchor(dx1, dy1, dx2, dy2, col1, row1, col2, row2)方法的参数说明:

⑴dx1第1个单元格中x轴的偏移量;

⑵dy1第1个单元格中y轴的偏移量;

⑶dx2第2个单元格中x轴的偏移量;

⑷dy2第2个单元格中y轴的偏移量;

⑸col1第1个单元格的列号;

⑹row1第1个单元格的行号;

⑺col2第2个单元格的列号;

⑻row2第2个单元格的行号;

5.创建页眉和页脚,代码如下所示:

 //创建页眉页脚
 @Test
 public void testExcel5() throws IOException
 {
     //创建Excel工作薄对象
     HSSFWorkbook workbook = new HSSFWorkbook();
     HSSFSheet sheet = workbook.createSheet("Test"); // 创建工作表(Sheet)
     HSSFHeader header = sheet.getHeader(); //得到页眉
     header.setLeft("页眉左边");
     header.setRight("页眉右边");
     header.setCenter("页眉中间");
     HSSFFooter footer = sheet.getFooter(); //得到页脚
     footer.setLeft("页脚左边");
     footer.setRight("页脚右边");
     footer.setCenter("页脚中间");
     //文档输出
     FileOutputStream out = new FileOutputStream("/Users/wangjun/temp/" + new SimpleDateFormat("yyyyMMddHHmmss")
         .format(new Date())
         .toString() + ".xls");
     workbook.write(out);
     out.close();
 }

以上就是关于在java中POI的含义以及Excel基本操作展示。想要了解更多java基础以及常见问题,敬请关注奇Q工具网。

推荐阅读:

java对象创建过程是什么样的?

java创建对象,显式创建对象详解

java对象的显式创建方式代码实例