java读取本地excel 文件,将excel内容转换成java对象

进餐小能手 2021-11-25 15:24:53 浏览数 (6792)
反馈

在技术的高速发展中我们学习编程不仅仅是为了制作相关的应用程序了,我们开始的使用编程来进行文件之间的操作,那么今天就来和大家分享有关于,java读取本地excel 文件,将excel内容转换成java对象这方面的相关内容。我们的操作工具eclipse + maven。

下面是我们的一个步骤: 

1. java操作excel所使用的jar包 poi-ooxml

        <dependency>

      <groupId>org.apache.poi</groupId>

      <artifactId>poi-ooxml</artifactId>

      <version>3.14</version>

        </dependency>

2.在本地建立一个excel文件

如下所示:

1

3.书写代码实现

package com.daojia.certify.excelimport;

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import org.apache.poi.xssf.usermodel.XSSFCell;

import org.apache.poi.xssf.usermodel.XSSFRow;

import org.apache.poi.xssf.usermodel.XSSFSheet;

import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import com.alibaba.fastjson.JSON;

import com.daojia.certify.util.DateBuilder;

/**

 * @Description : TODO导入excel

 * @date : Mar 31, 2018 5:17:14 PM

 */

public class ExcelImport { 

 public static void main(String args[]){

 ExcelImport  excelImport = new ExcelImport();

 try {

 excelImport.importExcelAction();

 } catch (Exception e) {

 // TODO Auto-generated catch block

 e.printStackTrace();

 }

 }

      //导入Excel数据

 public void importExcelAction() throws Exception {           

 //文件路径

         String filePath ="C:/Users/daojia/Desktop/test.xlsx";

       XSSFWorkbook wookbook = new XSSFWorkbook(new FileInputStream(filePath));

       XSSFSheet sheet = wookbook.getSheet("Sheet1");

       //获取到Excel文件中的所有行数

       int rows = sheet.getPhysicalNumberOfRows();

       //遍历行

       List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();

       for (int i = 1; i < rows; i++) {

         // 读取左上端单元格

         XSSFRow row = sheet.getRow(i);

         // 行不为空

         if (row != null) {

             Map<String,Object> map = new HashMap<String,Object>();  

          //获取到Excel文件中的所有的列

          int cells = row.getPhysicalNumberOfCells(); 

             //姓名

             XSSFCell nameCell =row.getCell(1); 

             String name = getValue(nameCell);

             //性别

             XSSFCell sexCell =row.getCell(2); 

             String sex = getValue(sexCell);     

             //年龄

             XSSFCell ageCell =row.getCell(3); 

             String age = getValue(ageCell);     

             //出生年月

             XSSFCell birthCell =row.getCell(4); 

             String birth = DateBuilder.convertDateToString(birthCell.getDateCellValue(), "yyyy-MM-dd");    

             map.put("name", name);

             map.put("sex", sex);

             map.put("age", age);

             map.put("birth", birth); 

             list.add(map);

             }       

        }

       System.out.println("list = "+JSON.toJSONString(list));

 }

 private String getValue(XSSFCell xSSFCell){

 if(null == xSSFCell){

 return "";

 }

  if (xSSFCell.getCellType() == xSSFCell.CELL_TYPE_BOOLEAN) {  

                 // 返回布尔类型的值  

                 return String.valueOf(xSSFCell.getBooleanCellValue());  

             } else if (xSSFCell.getCellType() == xSSFCell.CELL_TYPE_NUMERIC) {  

                 // 返回数值类型的值  

                 return String.valueOf(xSSFCell.getNumericCellValue());  

             } else {  

                 // 返回字符串类型的值  

                 return String.valueOf(xSSFCell.getStringCellValue());  

             }  

 }

输出结果:

list = [{"age":"","birth":"1991-09-03","name":"张三","sex":"男"},

{"age":"23.0","birth":"1992-09-03","name":"李四","sex":"女"},

{"age":"34.0","birth":"1993-09-03","name":"王五","sex":"男"},

{"age":"54.0","birth":"1994-09-03","name":"赵六","sex":"女"}]

注意:

    1.如果excel格式为 .xlsx ,使用以上方法,如果excel格式为 .xls 以上的  XSSFCell 变成  HSSFCell

    2.excel中的日期处理

            首先将excel日期设置格式为 2017/09/08  

            其次使用 getDateCellValue 方法读取日期格式即可

以上就是有关于“java读取本地excel 文件”这方面的相关内容,更多有关于 java 文件的相关内容我们可以在 java教程中查阅。

更多快速学习Java的方法大家可以看看下面的内容:

视频教程:

Java快速入门100集_新手自学教程

Java开发环境搭建

Java入门:JSP、Servlet精讲

Java:23天零基础完全入门

Java基础入门到框架实践

教程:

Java 教程

java常用技巧

微课:

Java入门课程

Java入门体验课程


0 人点赞