Java如何统计excel表格最后两列的人数,并且没有相同的人数
要统计Excel表格中最后两列的人数,并且保证没有相同的人数,可以使用Java中的Apache POI库来读取Excel文件并实现该功能,举个栗子
import java.io.FileInputStream;
import java.io.IOException;
import java.util.HashSet;
import java.util.Set;
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;
public class ExcelReader {
public static void main(String[] args) throws IOException {
String filename = "test.xlsx"; // Excel文件名
FileInputStream fis = new FileInputStream(filename);
Workbook wb = WorkbookFactory.create(fis);
Sheet sheet = wb.getSheetAt(0); // 获取第一个Sheet
Set<String> lastTwoCols = new HashSet<>(); // 用来存储最后两列的人数
for (Row row : sheet) {
Cell cell1 = row.getCell(row.getLastCellNum() - 2); // 获取倒数第二列
Cell cell2 = row.getCell(row.getLastCellNum() - 1); // 获取最后一列
String value1 = cell1.getStringCellValue().trim(); // 获取单元格内容并去掉空格
String value2 = cell2.getStringCellValue().trim(); // 获取单元格内容并去掉空格
String lastTwo = value1 + "_" + value2; // 合并最后两列
lastTwoCols.add(lastTwo); // 加入Set集合
}
int count = lastTwoCols.size(); // 统计不同的人数
System.out.println("不同的人数:" + count);
}
}
上述代码首先读取Excel文件,然后遍历第一个Sheet中的每一行,获取最后两列的内容,并将其合并成一个字符串,加入到一个Set集合中。由于Set集合的特点是不允许重复元素,因此最后Set集合的大小就是最后两列的不同人数。
回答不易,望采纳!😘
先解析出来不就知道有多少数据了么
首先要先知道Excel的有版本的差距,2003和2007,也就是后缀名不同,2003版本后缀名是xls,2007版本是xlsx,版本不同工作簿的创建方式不同,最好创建一个工具类方便使用
1、工具类ExcelUtil
/**
* @parm 28607
* @auther HS
* @date 2020/8/19 15:57
*/
public class ExcelUtil {
public final static String excel2003=".xls";
public final static String excel2007=".xlsx";
public static Workbook getWorkbook(String filename,String descFile)throws Exception{
Workbook wb=null;
String str=filename.substring(filename.lastIndexOf("."));
if(str.equals(excel2003)){
wb= new HSSFWorkbook(new FileInputStream(descFile));
}
else if(str.equals(excel2007)){
wb=new XSSFWorkbook(new FileInputStream(descFile));
}
else {
throw new Exception("文件格式有误");
}
return wb;
}
}
具体的实现方法:此处是以user的四行数据来测试
List<User> list = new ArrayList<>();
//调用工具类,创建一个工作簿,filename是完整文件名,descFile是路径名加完整的文件名
Workbook workbook= ExcelUtil.getWorkbook(filename, String.valueOf(descFile));
//创建一个工作表sheet
Sheet sheet=null;
for(int i=0;i<workbook.getNumberOfSheets();i++){
//获取每个sheet
sheet =workbook.getSheetAt(i);
//getPhysicalNumberOfRows获取有记录的行数,注意,此处获取的是有记录的条数,有标题的话自己控制其实位置
for(int j=0;j<sheet.getPhysicalNumberOfRows();j++){
Row row=sheet.getRow(j);
if(null!=row){
//getLastCellNum获取最后一列
User user=new User();
for(int k=0;k<row.getLastCellNum();k++){
if(null!=row.getCell(k)){
if(k==0) {
Cell cell = row.getCell(0);
cell.setCellType(CellType.STRING);
user.setUser_id(cell.getStringCellValue());
}
if(k==1) {
Cell cell = row.getCell(1);
user.setUser_name(cell.getStringCellValue().toString());
user.setUser_pass(cell.getStringCellValue().toString());
}
if(k==2) {
Cell cell = row.getCell(2);
user.setUser_nickname(cell.getStringCellValue().toString());
}
if(k==3) {
Cell cell = row.getCell(3);
user.setUser_avatar(cell.getStringCellValue().toString());
}
}
}
list.add(user);
}
}
}
获取user后添加到数据库就可以了
if(userDao.insertListUser(list)){
json.setData(list);
json.setMsg("上传成功");
json.setSuccess(true);
}