1.POI简单介绍

Apache POI 是用Java 编写的免费开源的跨平台的 Java API,Apache POI提供API给Java程式对 Microsoft Office 格式档案读和写的功能
  • 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格式档案的功能。

2.步骤

1.环境配置:导入jar包
<dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi</artifactId>
      <version>3.16</version>
</dependency>
2.创建一个Excel工作簿
 @Test
    public  void test() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

3.创建一个sheet页
   @Test
    public void sheet() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //创建sheet页面
        wb.createSheet("第一个sheet页");
        wb.createSheet("第二个sheet页");

        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel工作蒲带有sheet页.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

 

 

4.创建行和列
 @Test
    public void row() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //创建sheet页面
        Sheet sheet = wb.createSheet("学生信息sheet页");
        //创建一行
        Row row = sheet.createRow(0);
        //创建一个单元格
        Cell cell =null;
        for(int i = 0 ;i<5;i++){
            row.createCell(i).setCellValue("写入信息:单元格内容"+i);
        }
        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel学生信息.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

5.创建一个时间样式到Excel
 @Test
    public void date() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //创建sheet页面
        Sheet sheet = wb.createSheet("时间sheet页");
        //创建一行
        Row row = sheet.createRow(0);
        //创建一个单元格
        Cell cell = row.createCell(0);
        cell.setCellValue(new Date());

        CreationHelper creationHelper = wb.getCreationHelper();
        //设置单元格样式
        CellStyle cellStyle = wb.createCellStyle();
        cellStyle.setDataFormat(creationHelper.createDataFormat().getFormat("YYYY-MM-DD hh:mm:ss"));
        cell = row.createCell(1);
        cell.setCellValue(new Date());
        //设置日期样式
        cell.setCellStyle(cellStyle);

        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel日期格式.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

6.单元格对其方式及行高
@Test
    public void style() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //创建sheet页面
        Sheet sheet = wb.createSheet("第一个sheet");
        //创建一行
        Row row = sheet.createRow(0);
        //设置行高
        row.setHeightInPoints(30);
        //创建一个单元格
        createCell(wb,row,(short)0,HSSFCellStyle.ALIGN_CENTER,HSSFCellStyle.VERTICAL_BOTTOM);
        createCell(wb,row,(short)1,HSSFCellStyle.ALIGN_JUSTIFY,HSSFCellStyle.VERTICAL_CENTER);
        createCell(wb,row,(short)2,HSSFCellStyle.ALIGN_CENTER_SELECTION,HSSFCellStyle.VERTICAL_JUSTIFY);

        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

    /**
     * 创建一个单元格设置对应的对其方式
     * @param workbook 工作蒲
     * @param row 行
     * @param column 列
     */
    private static void createCell(Workbook workbook, Row row, short column,short halign,short valign){
        Cell cell = row.createCell(column);//创建单元格
        cell.setCellValue(new HSSFRichTextString("我是富文本"));//设置值
        CellStyle cellStyle = workbook.createCellStyle();//创建样式
        cellStyle.setAlignment(halign);//设置单元格水平方向对其方式
        cellStyle.setVerticalAlignment(valign);//设置单元格垂直方向对其方式
        cell.setCellStyle(cellStyle);
    }

合并单元格
 @Test
    public void test1() throws IOException {
        //定义一个工作蒲
        Workbook wb = new HSSFWorkbook();
        //创建sheet页面
        Sheet sheet = wb.createSheet("第一个sheet");
        //创建一行
        Row row = sheet.createRow(1);
        //设置行高
        row.setHeightInPoints(30);
        //创建一个单元格
        Cell cell = row.createCell(1);
        cell.setCellValue("合并单元格");
        //合并单元格(起始行,结束行,起始列,结束列)
        sheet.addMergedRegion(new CellRangeAddress(1,2,1,2));

        //定义一个输出流
        FileOutputStream fileOutputStream = new FileOutputStream("/home/ubuntu/Desktop/Excel样式.xls");
        //写入在输出流
        wb.write(fileOutputStream);
        //关闭输出流
        fileOutputStream.close();
    }

 

 

作者:Mr_欢先生
链接:https://www.jianshu.com/p/34514b188014
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。