在技术的高速发展中我们学习编程不仅仅是为了制作相关的应用程序了,我们开始的使用编程来进行文件之间的操作,那么今天就来和大家分享有关于,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文件
如下所示:
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的方法大家可以看看下面的内容:
视频教程:
教程:
微课: