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将输出工作簿写入输出文件中。
不知道你这个问题是否已经解决, 如果还没有解决的话:首先要先知道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);
}