java读取Excel

本文介绍了一个用于处理Excel文件上传的Java类,该类能够读取.xlsx、.xls和.csv格式的文件,验证文件格式,并从第一行开始读取数据。文章详细展示了如何使用Apache POI库读取单元格数据,进行数据类型检查和简单的数据清洗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;

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 org.apache.poi.xssf.usermodel.XSSFCell;

import com.jfinal.core.Controller;
import com.jfinal.json.Json;
import com.jfinal.kit.StrKit;
import com.jfinal.upload.UploadFile;

public class EditExcel extends Controller{
	
	
	public void editExcel() {
		
		UploadFile uploadFile =this.getFile();
		String path =uploadFile.getFile().getPath();
		int position = uploadFile.getFileName().lastIndexOf(".");
		String extension = uploadFile.getFileName().substring(position);
		String no ="";
		if(!extension.equals(".xlsx") && !extension.equals(".xls")
				&& !extension.equals(".csv")) {
			Map<String,Object> json =new HashMap<>();
			json.put("msg", "只支持xlsx、xls、csv格式文件导入");
			this.renderJson(json);
			return;
		}
		try {
			InputStream is =new FileInputStream(path);
			//定义工作簿
			Workbook workbook = WorkbookFactory.create(is);
			//定义工作簿
			Sheet hssfsheet = workbook.getSheetAt(0);
			if(hssfsheet !=null) {
				int totalrows = hssfsheet.getPhysicalNumberOfRows();//获取行数
			if(totalrows>1) {
				for(int i=1;i<totalrows;i++) {
				Row hssfrow =hssfsheet.getRow(i);
				if(StrKit.notNull(hssfrow)) {
					Cell xsscell0 = hssfrow.getCell(0);
					Cell xsscell1 = hssfrow.getCell(1);
					Cell xsscell2 = hssfrow.getCell(2);
					String member_name = "";
					String member_id = "";
					String member_tel = "";
					String member_sex = "";
					if (StrKit.notNull(xsscell1)
							&& xsscell1.getCellType() == XSSFCell.CELL_TYPE_STRING) {
						member_id = xsscell1.getStringCellValue().trim();
						member_id = member_id.replaceAll(" ", "");
						member_id = member_id.replaceAll(" ", "");
//						Pattern p = Pattern.compile("^[0-9]{15}([0-9]{2}[A-Za-z0-9])$");
//						Matcher m = p.matcher(member_id);
						if (Pattern.matches("(^\\d{17}[A-Za-z0-9]$)|(^\\d{14}[A-Za-z0-9]$)", member_id)) {
							System.out.println(member_id);
						} else {
							System.out.println("不合法");
							return;
						}
					}
				}
				}
				
			}
			}
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		
	}
	

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值