java导入excel文件的数据

java导入excel文件的数据

实现java批量导入excel文件能让我们在处理数据方面带来了很多方便之处。
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
注意:POI是对Microsoft Office格式档案读和写的功能,
所以你要用的必须是Microsoft Office的excel

所以要实现java导入excel文件,我们先需要导入poi的包,下面就是用maven项目导包,
具体如下:

		<!-- excel依赖包 -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>4.1.0</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml-schemas</artifactId>
			<version>4.1.0</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>4.1.0</version>
		</dependency>
  1. 首先我们创建一个excel表单,下面只是一个例子:
    在这里插入图片描述
  2. 现在就开始用java读取excel表单中的数据:
package com.yc.onlineExam.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;
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.xssf.usermodel.XSSFWorkbook;

public class ReadExcelToDB {
	//将double类型的值小数位保留0位
	private DecimalFormat df=new DecimalFormat("0");
	
	
	/**
	 * 将Excel中的数据读取到一个集合中
	 * @param fl
	 * @return
	 * @throws IOException 
	 * @throws FileNotFoundException 
	 */
	@SuppressWarnings("resource")
	public List<Map<String,String>> importExcel(File fl) throws FileNotFoundException, IOException{
		List<Map<String,String>>list=new ArrayList<Map<String,String>>();
		
		//创建一个excel对象
		Workbook workbook=null;
		//获取文件名
		String fileName=fl.getName().toLowerCase();
		if(fileName.endsWith("xls")){//如果excel文件以xls结尾,就创建HSSFWorkbook对象
			workbook=new HSSFWorkbook(new FileInputStream(fl));
		}else if(fileName.endsWith("xlsx")){//如果excel文件以xlsx结尾,就创建XSSFWorkbook对象
			workbook=new XSSFWorkbook(new FileInputStream(fl));
		}else{//如果都不是就抛出异常
			throw new RuntimeException("您选择的文件不是一个Excel文件....");
		}
		
		//通过表名获取一张表   
		Sheet sheet=workbook.getSheet("Sheet1");
		int rows=sheet.getLastRowNum();//获取最后一行的编号,即总共有多少行
		if(rows<=1){//第一行是标题
			throw new RuntimeException("表格中没有数据....");
		}
		
		//循环获取每一行的数据
		Row row=null;
		Iterator<Cell> cols=null;//获取列
		Map<String,String> map=null;
		String[] colName={"qname","tid","cid","ans1","ans2","ans3","ans4","ans","analysis"};
		int index=0;
		for(int i=1;i<=rows;i++){
			index=0;
			row=sheet.getRow(i);//获取这一行的列的信息
			if(row==null){
				continue;
			}
			
			cols=row.cellIterator();//获取这一行所有列的值
			map=new HashMap<String,String>();
			while(cols.hasNext()){
				map.put(colName[index], getCelltoString(cols.next()));
				index++;
			}
			list.add(map);
		}
		
		return list;
	}

	
	/**
	 * 将类型全部转换成String
	 * @param next
	 * @return
	 */
	private String getCelltoString(Cell cell) {
		if(cell==null){
			return "";
		}
		
		String str="";
		switch(cell.getCellType()){
			case STRING:str=cell.getStringCellValue();break;
			case NUMERIC:str=String.valueOf(df.format(cell.getNumericCellValue()));break;
			case BOOLEAN:str=String.valueOf(cell.getBooleanCellValue());break;
			case FORMULA:str=String.valueOf(cell.getCellFormula());break;
			case ERROR:str="";break;
			case BLANK:str="";break;
			default:str="";break;
		}
		
		return str;
	}
	
	public static void main(String[] args) throws FileNotFoundException, IOException {
						//excel表格的路径
		File fl=new File("C:\\Users\\yjj\\Documents\\question.xls");
		ReadExcelToDB read=new ReadExcelToDB();
		List<Map<String,String>> list=read.importExcel(fl);
		for(Map<String,String> lst:list){
			System.out.println(lst);
		}
	}
}

这样就可以获取到表格信息啦。。。。运行结果如下:
在这里插入图片描述

希望这篇文章能帮助到你。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值