0
点赞
收藏
分享

微信扫一扫

java导出Excel

橙子好吃吗 2022-04-13 阅读 146
java

一、POI方法导出Excel文件

meven包:

        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>4.1.2</version>
        </dependency>

二、 POI HSSF API组件详解

HSSF(用于操作Excel的组件)提供给用户使用的对象在rg.apache.poi.hssf.usermodel包中,主要部分包括Excel对象,样式和格式,还有辅助操作。有以下几种对象: 

 

三、输出到本地



    @Test
    public void excelPoi1() throws IOException {

        //创建HSSFWorkbook对象(excel的文档对象)
        HSSFWorkbook wb = new HSSFWorkbook();
        //建立新的sheet对象(excel的表单)
        HSSFSheet sheet = wb.createSheet("成绩表");
        //在sheet里创建第一行,参数为行索引(excel的行),可以是0~65535之间的任何一个
        HSSFRow row1 = sheet.createRow(0);
        //创建单元格(excel的单元格,参数为列索引,可以是0~255之间的任何一个
        HSSFCell cell = row1.createCell(0);
        //设置单元格内容
        cell.setCellValue("学员考试成绩一览表");
        //合并单元格CellRangeAddress构造参数依次表示        起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 3));


        //设置单元格格式
        HSSFCellStyle cellStyle = wb.createCellStyle();
        HSSFFont  fontStyle=wb.createFont();

        //设置字体样式
        fontStyle.setFontName("黑体");
        //设置字体高度
        fontStyle.setFontHeightInPoints((short)20);
        //设置一个字体的颜色
        //2表示红色
        //3表示绿色
        //4表示蓝色
        //5表示黄色
        //6表示紫色
        //7表示亮蓝色
        //8表示黑色
        //9表示白色
        fontStyle.setColor((short) 6);
        //设置斜体
        fontStyle.setItalic(false);
        //设置下划线
        fontStyle.setUnderline(HSSFFont.U_SINGLE);
        //设置粗体
        fontStyle.setBold(true);
        //设置日期型数据的显示样式
        cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy h:mm"));
        //设置背景颜色
        cellStyle.setFillForegroundColor((short) 13);
        cellStyle.setFillPattern(FillPatternType.SOLID_FOREGROUND);
        // 将字体对象赋值给单元格样式对象
        cellStyle.setFont(fontStyle);
        // 将单元格样式应用于单元格
        cell.setCellStyle(cellStyle);

        //在sheet里创建第二行
        HSSFRow row2 = sheet.createRow(1);
        //创建单元格并设置单元格内容
        row2.createCell(0).setCellValue("姓名");
        row2.createCell(1).setCellValue("班级");
        row2.createCell(2).setCellValue("笔试成绩");
        row2.createCell(3).setCellValue("机试成绩");
        //在sheet里创建第三行
        HSSFRow row3 = sheet.createRow(2);
        row3.createCell(0).setCellValue("李明");
        row3.createCell(1).setCellValue("As178");
        row3.createCell(2).setCellValue(87);
        row3.createCell(3).setCellValue(78);

        //将文件输出本地
        FileOutputStream output=new FileOutputStream("e:\\workbook2.xls");
        wb.write(output);
        output.flush();
        System.out.println("ok");

    }

 

导入excel

实现将已存在的Excel文件中的数据导入到系统中的基本步骤同导出十分的类似,关键在于要了解要导入Excel文件的结构,比如数据有哪些列、读取数据起始位置(有效数据从第几行几列开始)等。

//解析Excel
    public void readExcel(String filePath) throws IOException {
        List temp = new ArrayList();
        FileInputStream fileIn = new FileInputStream(filePath);
        //根据指定的文件输入流导入Excel从而产生Workbook对象
        Workbook wb0 = new HSSFWorkbook(fileIn);
        //获取Excel文档中的第一个表单
        Sheet sht0 = wb0.getSheetAt(0);
        //对Sheet中的每一行进行迭代
        for (Row r : sht0) {
            System.out.println("第"+r+"行-----------");
            //如果当前行的行号(从0开始)未达到2(第三行)则从新循环
            if (r.getRowNum() < 1) {
                continue;
            }
            for (int i = 0; i<5; i++) {
                //取出当前行第1个单元格数据
                String stringCellValue = r.getCell(i).getStringCellValue();
                System.out.println(i+":"+stringCellValue);
            }
        }
    }
举报

相关推荐

0 条评论