Java解析Excel之POI(一)

2019-01-21 02:41:35来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

引入依赖:

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

解析代码:

public static void main(String[] args) {

        // 【读取】------------------------------------------------------------
        // 从 template.xls 文件中读取数据,并保存到 ArrayList<Area> 中后打印输出。
        ArrayList<Area> list = new ArrayList<Area>();
        try {
            // 1、获取文件输入流
            InputStream inputStream = new FileInputStream("/Users/hrvy/temp/template.xls");
            // 2、获取Excel工作簿对象
            HSSFWorkbook workbook = new HSSFWorkbook(inputStream);
            // 3、得到Excel工作表对象
            HSSFSheet sheetAt = workbook.getSheetAt(0);
            // 4、循环读取表格数据
            for (Row row : sheetAt) {
                // 首行(即表头)不读取
                if (row.getRowNum() == 0) {
                    continue;
                }
                // 读取当前行中单元格数据,索引从0开始
                String country = row.getCell(0).getStringCellValue();
                String province = row.getCell(1).getStringCellValue();
                String city = row.getCell(2).getStringCellValue();

                Area area = new Area();
                area.setCountry(country);
                area.setProvince(province);
                area.setCity(city);
                list.add(area);
            }
            System.out.println(list.toString());
            // 5、关闭流
            workbook.close();
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 【写出】------------------------------------------------------------
        // 新建一个 template_copy.xls 文件,并将 ArrayList<Area> 中的数据写入 template_copy.xls 文件
        // 1.在内存中创建一个excel文件
        HSSFWorkbook workbook = new HSSFWorkbook();
        // 2.创建工作簿
        HSSFSheet sheet = workbook.createSheet();
        // 3.创建标题行
        HSSFRow titlerRow = sheet.createRow(0);
        titlerRow.createCell(0).setCellValue("国家copy");
        titlerRow.createCell(1).setCellValue("省份copy");
        titlerRow.createCell(2).setCellValue("城市copy");
        // 4.遍历数据,创建数据行
        for (Area area : list) {
            // 获取最后一行的行号
            int lastRowNum = sheet.getLastRowNum();
            // 添加新行
            HSSFRow dataRow = sheet.createRow(lastRowNum + 1);
            dataRow.createCell(0).setCellValue(area.getCountry());
            dataRow.createCell(1).setCellValue(area.getProvince());
            dataRow.createCell(2).setCellValue(area.getCity());
        }
        // 5.创建文件名
        String fileName = "template_copy.xls";
        // 6.获取输出流对象
        OutputStream outputStream;
        try {
            outputStream = new FileOutputStream("/Users/hrvy/temp/" + fileName);
            // 7.写出文件,关闭流
            workbook.write(outputStream);
            workbook.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        
    }

 

 

参照:

https://www.cnblogs.com/gdwkong/p/8669220.html


原文链接:https://www.cnblogs.com/cn9087/p/10296266.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:分布式文件系统之FastDFS

下一篇:深入理解Java虚拟机(一) 运行时数据区划分