java使用easypoi poi获取excel某单元格的值
硅谷探秘者
2021-05-12发表
算法基础
0
0
3862
Pom依赖
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-web</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-annotation</artifactId>
<version>4.0.0</version>
</dependency>
控制层代码
import org.apache.poi.ss.usermodel.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.text.DateFormat;
import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
@RestController
public class TestController {
@GetMapping("test")
public void test(MultipartFile file) throws Exception{
//创建一个工作铺
Workbook workbook = WorkbookFactory.create(file.getBytes());
//获取第一个excel表
Sheet sheet = workbook.getSheetAt(0);
//获取excel的第二行(注意下表从0开始,0代表第一行)
Row row = sheet.getRow(1);
//获取excel的第二列(注意下表从0开始,0代表第一列)
Cell testCell=row.getCell(1);
//第二行第二列的数据
String test = getXCellVal(testCell);
System.out.println(test);
//第二行第六列的数据
Cell test2Cell=row.getCell(5);
String test2 = getXCellVal(test2Cell);
System.out.println(test2);
return;
}
/**
* 根据单元格的格式 获取单元格的内容
* @param cell
* @return
*/
private static String getXCellVal(Cell cell) {
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
DecimalFormat df = new DecimalFormat("0.0000");
String val = "";
switch (cell.getCellType()) {
case NUMERIC:
if (DateUtil.isCellDateFormatted(cell)) {
val = fmt.format(cell.getDateCellValue()); //日期型
} else {
val = df.format(cell.getNumericCellValue()); //数字型
// 去掉多余的0,如最后一位是.则去掉
val = val.replaceAll("0+?$", "").replaceAll("[.]$","");
}
break;
case STRING: //文本类型
val = cell.getStringCellValue();
break;
case BOOLEAN: //布尔型
val = String.valueOf(cell.getBooleanCellValue());
break;
case BLANK: //空白
val = cell.getStringCellValue();
break;
case ERROR: //错误
val = "";
break;
case FORMULA: //公式
try {
val = String.valueOf(cell.getStringCellValue());
} catch (IllegalStateException e) {
val = String.valueOf(cell.getNumericCellValue());
}
break;
default:
val = cell.getRichStringCellValue() == null ? null : cell.getRichStringCellValue().toString();
}
return val;
}
}