导入Excel时异常:java.lang.RuntimeException: CountryRecord not found
产生此异常原因:使用工具导出Excel时,无国家码。如果将Excel在本地打开,稍微调整格式,不做内容修改,然后保存,再导入发现又恢复正常。
解决方案使用:使用spire.xls.free添加文件属性,然后再保存
添加Maven依赖:
<dependency>
<groupId>e-iceblue</groupId>
<artifactId>spire.xls.free</artifactId>
<version>2.2.0</version>
</dependency>
添加repositories
<repositories>
<repository>
<id>com.e-iceblue</id>
<url>http://repo.e-iceblue.cn/repository/maven-public/</url>
</repository>
</repositories>
上代码
package com.icanits;
import cn.afterturn.easypoi.excel.ExcelImportUtil;
import cn.afterturn.easypoi.excel.entity.ImportParams;
import cn.afterturn.easypoi.excel.entity.result.ExcelImportResult;
import com.icanits.springbootexample.SpringbootExampleApplication;
import com.icanits.springbootexample.entity.P1XlsReqEntity;
import com.spire.xls.Workbook;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.io.File;
import java.util.List;
@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest(classes = SpringbootExampleApplication.class)
public class EasyPoiTest {
@Test
public void testImport() throws Exception {
File importFile = new File(
"C:\\Users\\Administrator\\Desktop\\P00001C103094200001520220615001.xls");
Workbook workbook = new Workbook();
workbook.loadFromFile(importFile.getAbsolutePath());
//给文件设置属性,相当于修改文件。
workbook.getDocumentProperties().setAuthor("PENGSIWEN");
File saveFile = new File("C:\\Users\\Administrator\\Desktop\\P00001C103094200001520220615001_.xls");
workbook.saveToFile(saveFile.getAbsolutePath());
ImportParams importParams = new ImportParams();
importParams.setTitleRows(0);
importParams.setHeadRows(1);
importParams.setNeedVerify(true);
ExcelImportResult<P1XlsReqEntity> objectExcelImportResult =
ExcelImportUtil.importExcelMore(importFile, P1XlsReqEntity.class, importParams);
if(objectExcelImportResult.isVerfiyFail()){
List<P1XlsReqEntity> failList = objectExcelImportResult.getFailList();
for (P1XlsReqEntity p1XlsReqEntity : failList) {
System.out.println("--- 第"+p1XlsReqEntity.getRowNum()+"行错误:" + p1XlsReqEntity.getErrorMsg());
}
}
}
}
问题完美解决!!!