使用poi和J-Excel你可能不知道的小技巧

2025-11-23 22:31:03

1、很多新手刚刚使用J-Excel的时候不知道怎么编辑Excel里面的格式才能被后台的类识别。其实文档经过poi解析后成为sheet,sheet转换问model的时候需要一定格式才能正常转化,不然会报异常。

2、如下图所示:第一行的第一空不能为空,为空会出现异常,最好填个0(这个值跟表名有关,一般转化model的时候用不到。);

第二行是该表的表名让变结构更加清晰自然;第三行就是转化model的关键的东西了。{"columnName":"id","innerColumn":"","length":0,"size":0,"tookValue":"","tookName":""}这个是后台识别model的属性字段,"columnName":"id"中的id对应了PersonVo类中的id属性。第四行则就是属性的对应中文名称了。红色部分的就是需要转化为model的内容了。

使用poi和J-Excel你可能不知道的小技巧

3、我的代码是这样的:


import org.jplus.hyberbin.excel.annotation.ExcelVoConfig;
import org.jplus.hyberbin.excel.annotation.Lang;
import org.jplus.hyberbin.excel.annotation.input.InputTextConfig;
import org.jplus.hyberbin.excel.annotation.output.OutputDefaultConfig;
import org.jplus.hyberbin.excel.bean.BaseExcelVo;
/**
* Created by 30721 on 2019/7/1.
*/
@ExcelVoConfig
public class PersonVo extends BaseExcelVo {
   // 策略名称
   @InputTextConfig(nullAble = false, tip = "策略名称不能为空!")
   @OutputDefaultConfig(nullAble = false)
   @Lang(value = "id")//Excel导出的配置
   protected String  id;
   // 策略名称
   @InputTextConfig(nullAble = false, tip = "策略名称不能为空!")
   @OutputDefaultConfig(nullAble = false)
   @Lang(value = "name")//Excel导出的配置
   protected String  name;
   public String getId() {
       return id;
   }
   public void setId(String id) {
       this.id = id;
   }
   public String getName() {
       return name;
   }
   public void setName(String name) {
       this.name = name;
   }
   @Override
   public String toString() {
       return "PersonVo{" +
               "id='" + id + '\'' +
               ", name='" + name + '\'' +
               '}';
   }
   @Override
   public int getHashVal() {
       return 0;
   }
   //用于自定义验证数据
//    @Override
//    public boolean validate() {
//        return true;
//    }
}

使用poi和J-Excel你可能不知道的小技巧

4、service层:

import cn.cy.vo.PersonVo;


import org.apache.poi.ss.usermodel.Sheet;
import org.jplus.hyberbin.excel.service.ImportExcelService;
import org.springframework.stereotype.Service;

@Service


public class ImportService {
   public void importPerson(Sheet sheet) throws Exception {
       ImportExcelService service = new ImportExcelService(PersonVo.class, sheet);
       List<PersonVo> personVos = service.doImport();
       for (PersonVo personVo: personVos) {
           System.out.println(personVo);
       }
   }
}

使用poi和J-Excel你可能不知道的小技巧

5、测试代码:


import cn.cy.service.excel.ImportService;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import javax.annotation.Resource;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
* Created by 30721 on 2019/7/1.
*/
@RunWith(SpringRunner.class)
@SpringBootTest
public class VoTest {
   @Resource
   private ImportService importService;
   @Test
   public void doImport() {
       File file = new File("C:\\Users\\30721\\Desktop\\personVo.xlsx");
       try {
           Workbook workbook = new XSSFWorkbook(new FileInputStream(file));
           Sheet sheet = workbook.getSheet("personVo");
           importService.importPerson(sheet);
       } catch (Exception e) {
           e.printStackTrace();
       }
   }
}

使用poi和J-Excel你可能不知道的小技巧

6、控制层的代码:

@RequestMapping(value = "/upload")


@ResponseBody
public void uploadCloudPortFile(HttpServletRequest request) {
   try {
       Map<String, Object> map = new HashMap<String, Object>();
       // 取得上传的文件
       MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
       CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
               .getFile("file");
       // 得到文件名称
       String realFileName = file.getOriginalFilename();
       String suffix = realFileName.substring(realFileName.indexOf("."),
               realFileName.length());
       Workbook workbook = null;
       if (".xlsx".equals(suffix)) {
           workbook = new XSSFWorkbook(file.getInputStream());
       } else {
           workbook = new HSSFWorkbook(file.getInputStream());
       }
       Sheet sheet = workbook.getSheet("personVo");
       importService.importPerson(sheet);
   } catch (Exception e) {
       e.printStackTrace();
   }
}

使用poi和J-Excel你可能不知道的小技巧

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
相关推荐
  • 阅读量:190
  • 阅读量:136
  • 阅读量:103
  • 阅读量:179
  • 阅读量:23
  • 猜你喜欢