简单poi读取excel

Posted on   南宫羽香  阅读(3087)  评论(0编辑  收藏  举报

1.添加依赖jar包

maven配置:

复制代码
<!-- poi being -->
    <dependency>
       <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>3.9</version>
    </dependency>
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>3.9</version>
    </dependency>
<!-- poi end -->                
复制代码

或者,不是maven项目的话,直接在buildpath中添加jar包:

2.读取excel简单例子

复制代码
package com.demo.excel.execute;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

import com.demo.excel.modle.example.Book;

/**
 * 
 * @ClassName: ReadBooks
 * @Description: 读取图书列表excel
 * @author LCL
 * @date 2016年9月2日
 *
 */
public class ReadBooks {
    private Workbook workbook;
    private Sheet sheet;
    private Row row;
    private List<Book> books = new ArrayList<Book>();

    /**
     * 
     * @Title: readFile
     * @Description: 将文件读入内存
     * @param @param
     *            filePath 文件路径
     * @return void null
     */
    public void readFile(String filePath) {
        try {
            File excelFile = new File(filePath);
            FileInputStream is = new FileInputStream(excelFile);
            workbook = WorkbookFactory.create(is);
            sheet = workbook.getSheetAt(0);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 
    * @Title: readLine
    * @Description: 读取每一行的图书信息
    * @return void null
     */
    public void readLine() {
        Iterator<Row> rows = sheet.rowIterator();
        while (rows.hasNext()) {
            row = (Row) rows.next();
            if (row.getRowNum() ==0 ) {
                continue;
            }
            Book book = new Book();
            Iterator<Cell> cells = row.cellIterator();
            while (cells.hasNext()) {
                Cell cell = (Cell) cells.next();
                if (cell.getCellType() == Cell.CELL_TYPE_NUMERIC && cell.getColumnIndex() == 0) {
                    book.setCode((int)cell.getNumericCellValue());
                    continue;
                }
                if (cell.getColumnIndex() == 1) {
                    book.setName(cell.getStringCellValue());
                    continue;
                }
                if (cell.getColumnIndex() == 2) {
                    book.setPress(cell.getStringCellValue());
                    continue;
                }
                if (cell.getColumnIndex() == 3) {
                    book.setDate(cell.getDateCellValue());
                }
            }
            books.add(book);
        }
    }

    public List<Book> getBooks() {
        return books;
    }
}
复制代码

Book.java

复制代码
package com.demo.excel.modle.example;

import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Book {
    private int code;
    private String name;
    private String press;
    private Date date;
    public int getCode() {
        return code;
    }
    public void setCode(int code) {
        this.code = code;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getPress() {
        return press;
    }
    public void setPress(String press) {
        this.press = press;
    }
    public Date getDate() {
        return date;
    }
    public void setDate(Date date) {
        this.date = date;
    }
    @Override
    public String toString() {
        return "Book [code=" + code + ", name=" + name + ", press=" + press + ", date=" + formatDate(date) + "]";
    }
    
    private String formatDate(Date date) {
        DateFormat format = new SimpleDateFormat("yyyy/MM/dd");
        return format.format(date);
    }
}
复制代码

测试:

复制代码
package com.demo.excel.db;

import com.demo.excel.execute.ReadBooks;

import junit.framework.TestCase;

public class ReadBooksTest extends TestCase {
    private final String path = "E:/lichenli/storage/file/book.xlsx";
    public void testReadBook() {
        ReadBooks readbooks = new ReadBooks();
        readbooks.readFile(path);
        readbooks.readLine();
        assertEquals(6, readbooks.getBooks().size());
    }
}
复制代码

文件内容

 

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示