java如何使用判断语句获取excel指定的行或列

Java如何使用判断语句获取excel指定的行和列写入表格中

在Java中,可以使用Apache POI库来操作Excel文件。以下是一个示例代码,可以从一个Excel文件中读取指定的行和列,并将它们写入另一个Excel文件中。

Copy code
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
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 ExcelReadWrite {
    public static void main(String[] args) {
        String inputFile = "input.xlsx"; // 输入文件名
        String outputFile = "output.xlsx"; // 输出文件名
        int rowNum = 2; // 指定行
        int colNum = 1; // 指定列
        try {
            FileInputStream inputStream = new FileInputStream(new File(inputFile));
            Workbook inputWorkbook = new XSSFWorkbook(inputStream); // 读取输入文件
            Sheet inputSheet = inputWorkbook.getSheetAt(0); // 获取第一个工作表
            Row row = inputSheet.getRow(rowNum); // 获取指定行
            Cell cell = row.getCell(colNum); // 获取指定列
            String cellValue = cell.getStringCellValue(); // 获取单元格的字符串值
            Workbook outputWorkbook = new XSSFWorkbook(); // 创建一个新的工作簿
            Sheet outputSheet = outputWorkbook.createSheet(); // 创建一个新的工作表
            Row outputRow = outputSheet.createRow(0); // 创建一个新的行
            Cell outputCell = outputRow.createCell(0); // 创建一个新的单元格
            outputCell.setCellValue(cellValue); // 将单元格值设置为读取的值
            FileOutputStream outputStream = new FileOutputStream(new File(outputFile));
            outputWorkbook.write(outputStream); // 将输出工作簿写入输出流
            outputWorkbook.close();
            inputStream.close();
            outputStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在这个示例中,我们使用FileInputStream从输入文件中读取Excel数据。然后,我们获取指定的行和列,并使用getStringCellValue()方法获取单元格的值。接下来,我们创建一个新的工作簿,并在其中创建一个新的工作表、行和单元格。最后,我们使用FileOutputStream将输出工作簿写入输出文件中。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/381266
  • 这篇博客也不错, 你可以看下java向excel 写入海量数据内存溢出问题 解决
  • 除此之外, 这篇博客: java实现Excel表格的上传以及导入数据库中的 java实现Excel表格的上传以及导入数据库 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    首先要先知道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);
                    }
    

    在这里插入图片描述


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^