zoukankan      html  css  js  c++  java
  • Apache POI – Reading and Writing Excel file in Java

    来源于:https://www.mkyong.com/java/apache-poi-reading-and-writing-excel-file-in-java/

    In this article, we will discuss about how to read and write an excel file using Apache POI

    1. Basic definitions for Apache POI library

    This section briefly describe about basic classes used during Excel Read and Write.

    1. HSSF is prefixed before the class name to indicate operations related to a Microsoft Excel 2003 file.
    2. XSSF is prefixed before the class name to indicate operations related to a Microsoft Excel 2007 file or later.
    3. XSSFWorkbook and HSSFWorkbook are classes which act as an Excel Workbook
    4. HSSFSheet and XSSFSheet are classes which act as an Excel Worksheet
    5. Row defines an Excel row
    6. Cell defines an Excel cell addressed in reference to a row.

    2. Download Apache POI

    Apache POI library is easily available using Maven Dependencies.

    pom.xml
    <dependency>
      <groupId>org.apache.poi</groupId>
      <artifactId>poi-ooxml</artifactId>
      <version>3.15</version>
    </dependency>

    3. Apache POI library – Writing a Simple Excel

    The below code shows how to write a simple Excel file using Apache POI libraries. The code uses a 2 dimensional data array to hold the data. The data is written to a XSSFWorkbook object. XSSFSheet is the work sheet being worked on. The code is as shown below:

    ApachePOIExcelWrite.java
    package com.mkyong;
    
    import org.apache.poi.ss.usermodel.Cell;
    import org.apache.poi.ss.usermodel.Row;
    import org.apache.poi.xssf.usermodel.XSSFSheet;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    
    public class ApachePOIExcelWrite {
    
        private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
    
        public static void main(String[] args) {
    
            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet("Datatypes in Java");
            Object[][] datatypes = {
                    {"Datatype", "Type", "Size(in bytes)"},
                    {"int", "Primitive", 2},
                    {"float", "Primitive", 4},
                    {"double", "Primitive", 8},
                    {"char", "Primitive", 1},
                    {"String", "Non-Primitive", "No fixed size"}
            };
    
            int rowNum = 0;
            System.out.println("Creating excel");
    
            for (Object[] datatype : datatypes) {
                Row row = sheet.createRow(rowNum++);
                int colNum = 0;
                for (Object field : datatype) {
                    Cell cell = row.createCell(colNum++);
                    if (field instanceof String) {
                        cell.setCellValue((String) field);
                    } else if (field instanceof Integer) {
                        cell.setCellValue((Integer) field);
                    }
                }
            }
    
            try {
                FileOutputStream outputStream = new FileOutputStream(FILE_NAME);
                workbook.write(outputStream);
                workbook.close();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            System.out.println("Done");
        }
    }

    On executing the above code, you get below excel as an output.

    apache-poi-read-write-excel

    4. Apache POI library – Reading an Excel file

    The below code explains how to read an Excel file using Apache POI libraries. The function getCellTypeEnum is deprecated in version 3.15 and will be renamed to getCellType from version 4.0 onwards.

    ApachePOIExcelRead.java
    package com.mkyong;
    
    import org.apache.poi.ss.usermodel.*;
    import org.apache.poi.xssf.usermodel.XSSFWorkbook;
    
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Iterator;
    
    public class ApachePOIExcelRead {
    
        private static final String FILE_NAME = "/tmp/MyFirstExcel.xlsx";
    
        public static void main(String[] args) {
    
            try {
    
                FileInputStream excelFile = new FileInputStream(new File(FILE_NAME));
                Workbook workbook = new XSSFWorkbook(excelFile);
                Sheet datatypeSheet = workbook.getSheetAt(0);
                Iterator<Row> iterator = datatypeSheet.iterator();
    
                while (iterator.hasNext()) {
    
                    Row currentRow = iterator.next();
                    Iterator<Cell> cellIterator = currentRow.iterator();
    
                    while (cellIterator.hasNext()) {
    
                        Cell currentCell = cellIterator.next();
                        //getCellTypeEnum shown as deprecated for version 3.15
                        //getCellTypeEnum ill be renamed to getCellType starting from version 4.0
                        if (currentCell.getCellTypeEnum() == CellType.STRING) {
                            System.out.print(currentCell.getStringCellValue() + "--");
                        } else if (currentCell.getCellTypeEnum() == CellType.NUMERIC) {
                            System.out.print(currentCell.getNumericCellValue() + "--");
                        }
    
                    }
                    System.out.println();
    
                }
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
        }
    }

    On executing the above code, you get the below output.

    Datatype--Type--Size(in bytes)--
    int--Primitive--2.0--
    float--Primitive--4.0--
    double--Primitive--8.0--
    char--Primitive--1.0--
    String--Non-Primitive--No fixed size--

    References

    1. Details about deprecation of getCellTypeEnum
    2. Apache POI reference regarding Deprecation
    3. Apache POI Maven Repo
    4. Apache POI API docs
  • 相关阅读:
    RANSAC算法——RANDOM SAMPLE CONSENSUS
    屏蔽关键词搜索
    全景图拼接——opencv之stitching
    如何 查看本地安装的 .NET Framework(CLR) 版本 方法二亲测可行
    js判断是否是ie浏览器且给出ie版本
    js判断文件大小利用img 的 dynsrc,兼容IE10 及以上
    Java的——String类、StringBuffer和StringBuilder、不可变和可变字符序列使用陷阱
    windows.onload和body的onload属性的区别
    jquery中class选择器的用法,选择两个class
    #JS# 如何判断一个字符串是否为日期格式
  • 原文地址:https://www.cnblogs.com/ys-wuhan/p/6359270.html
Copyright © 2011-2022 走看看