Java使用Apache POI导出Excel

作者: Mr_欢先生 | 来源:发表于2017-09-27 13:44 被阅读359次

    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();
        }
    
    sheet页
    • 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();
        }
    

    相关文章

      网友评论

        本文标题:Java使用Apache POI导出Excel

        本文链接:https://www.haomeiwen.com/subject/weqdsxtx.html