利用POI進(jìn)行Excel的文件解析屠尊,maven依賴如下
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${apache.poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${apache.poi.ooxml.version}</version>
</dependency>
配置SpringMvc文件上傳解析器
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 設(shè)定默認(rèn)編碼 -->
<property name="defaultEncoding" value="UTF-8"></property>
<!-- 設(shè)定文件上傳的最大值為5MB-->
<property name="maxUploadSize" value="5242880"></property>
<!-- 設(shè)定文件上傳時(shí)寫(xiě)入內(nèi)存的最大值,如果小于這個(gè)參數(shù)不會(huì)生成臨時(shí)文件,默認(rèn)為10240 -->
<property name="maxInMemorySize" value="40960"></property>
<!-- 延遲文件解析 -->
<property name="resolveLazily" value="true"/>
</bean>
寫(xiě)上傳文件的Controller
public BaseResponse upload(MultipartFile file) throws Exception {
//檢驗(yàn)忽略
...
//獲取文件后綴名
String suffix = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(Constant.DOT) + 1);
Workbook wb = null;
//對(duì)于2003的版本裂垦,用HSSFWorkbook處理
if (Constant.EXCEL_2003_SUFFIX.equals(suffix)) {
wb = new HSSFWorkbook(file.getInputStream());
//對(duì)于2007以及后續(xù)版本颠毙,用XSSFWorkbook進(jìn)行處理
} else if (Constant.EXCEL_2007_SUFFIX.equals(suffix)) {
wb = new XSSFWorkbook(file.getInputStream());
} else {
return buildResponse(CommonCodeEnum.FILE_SUFFIX_NO_VALID, null);
}
List<Long> ids = Lists.newArrayList();
try {
//獲取第一個(gè)sheet斯入,可以利用循環(huán)獲取每個(gè)sheet的內(nèi)容
Sheet sheet = wb.getSheetAt(0);
//第一行是標(biāo)題,跳過(guò)
for (int i = 1; i < sheet.getLastRowNum() + 1; i++) {
Row row = sheet.getRow(i);
if (row != null) {
//獲取第一列的內(nèi)容
Cell cell = row.getCell(0);
Long id = (long) cell.getNumericCellValue();//數(shù)字類型
id.add(poiId);
}
}
} catch (Exception e) {
return buildResponse(CommonCodeEnum.FILE_CONTENT_NO_VALID, null);
}
//后續(xù)處理忽略
...
}
可以利用postman進(jìn)行測(cè)試
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者