下面是SpringMVC上传和解析Excel的攻略:
目录
- 前置条件
- 步骤一:添加依赖
- 步骤二:编写上传页面
- 步骤三:编写Controller接收上传文件
- 步骤四:编写Excel解析方法
- 示例一:上传并解析Excel文件
- 示例二:将Excel数据存储到数据库中
前置条件
在开始编写代码前,确保已经满足以下条件:
- SpringMVC项目已经搭建完成。
- 已经熟悉SpringMVC的基本操作和配置。
- 已经安装好了POI依赖的JAR包。
步骤一:添加依赖
在pom.xml
文件中添加如下依赖:
<dependencies>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
</dependencies>
步骤二:编写上传页面
在.jsp
页面中编写用于上传文件的代码:
<form method="post" action="/upload" enctype="multipart/form-data">
<input type="file" name="file"/>
<input type="submit" value="上传"/>
</form>
步骤三:编写Controller接收上传文件
编写Controller用于接收上传的文件:
@Controller
public class UploadController {
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) {
// 省略上传代码
return "result";
}
}
步骤四:编写Excel解析方法
编写用于解析Excel的方法:
public List<List<String>> readExcel(MultipartFile file) throws IOException {
Workbook workbook = null;
List<List<String>> result = new ArrayList<>();
InputStream is = file.getInputStream();
if (file.getOriginalFilename().endsWith("xlsx")) {
workbook = new XSSFWorkbook(is);
} else if (file.getOriginalFilename().endsWith("xls")) {
workbook = new HSSFWorkbook(is);
}
Sheet sheet = workbook.getSheetAt(0);
for (int i = 0; i <= sheet.getLastRowNum(); i++) {
Row row = sheet.getRow(i);
List<String> rowList = new ArrayList<>();
for (int j = 0; j < row.getLastCellNum(); j++) {
Cell cell = row.getCell(j);
String value = "";
if (cell != null) {
if (cell.getCellTypeEnum() == CellType.NUMERIC) {
value = String.valueOf(cell.getNumericCellValue());
} else {
value = cell.getStringCellValue();
}
}
rowList.add(value);
}
result.add(rowList);
}
return result;
}
示例一:上传并解析Excel文件
在Controller中调用解析Excel的方法:
@Controller
public class UploadController {
@Autowired
private ExcelService excelService;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
List<List<String>> result = excelService.readExcel(file);
// 省略其他代码
return "result";
}
}
示例二:将Excel数据存储到数据库中
在pom.xml
文件中添加数据库依赖:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>1.4.199</version>
<scope>test</scope>
</dependency>
创建实体类和DAO:
@Data
public class Person {
private String name;
private int age;
}
@Repository
public class PersonDao {
@Autowired
private JdbcTemplate jdbcTemplate;
public int insert(Person person) {
return jdbcTemplate.update("INSERT INTO person (name, age) VALUES (?, ?)",
person.getName(), person.getAge());
}
}
在Service中调用解析Excel和保存到数据库的方法:
@Service
public class ExcelService {
@Autowired
private PersonDao personDao;
public void readAndInsert(MultipartFile file) throws IOException {
List<List<String>> result = readExcel(file);
for (List<String> row : result) {
Person person = new Person();
person.setName(row.get(0));
person.setAge(Integer.parseInt(row.get(1)));
personDao.insert(person);
}
}
}
在Controller中调用上传解析和插入数据库的方法:
@Controller
public class UploadController {
@Autowired
private ExcelService excelService;
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public String upload(@RequestParam("file") MultipartFile file) throws IOException {
excelService.readAndInsert(file);
// 省略其他代码
return "result";
}
}
以上就是SpringMVC上传和解析Excel的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringMVC上传和解析Excel方法 - Python技术站