当前位置: 首页 > news >正文

福州做网站公司网络营销策略方案

福州做网站公司,网络营销策略方案,怎么做网站布局,矿山建设网站“ POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出,修改导出格式简单粗暴,快速有效,easypoi值得你尝试”目前来说,Easypoi确实方便,官网也提供了三种不同的版本,它在开源中国还&#…

88e2a5ea46b3056136b6a8d1c8b95b66.png
“ POI 工具类,Excel的快速导入导出,Excel模板导出,Word模板导出,可以仅仅5行代码就可以完成Excel的导入导出,修改导出格式简单粗暴,快速有效,easypoi值得你尝试

目前来说,Easypoi确实方便,官网也提供了三种不同的版本,它在开源中国还,还是非常出名的,用的人非常多,也是对他的一个认可。

1103bdd26fcbcedddfd9a041a8af41fa.png

小编目前的项目,也是用这个来做,今天我们来做个excel的导入导出例子,看看怎么使用?

包体引入

目前官方提供最新版本是4.2.0,但是我在使用过程中,总是报错,时间关系就没怎么去查找,有兴趣的同学可以呀研究一下,类找不到,这个是apache的一个类,估计是新版本需要引入别的包,没去仔细追究。

java.lang.NoClassDefFoundError: org/apache/poi/xssf/usermodel/XSSFWorkbook<!-- springboot核心web --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 引入EasyPoi包 --><dependency><groupId>cn.afterturn</groupId><artifactId>easypoi-spring-boot-starter</artifactId><version>4.1.0</version></dependency><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency>

编写导入导出工具类

/*** Excel枚举类型* @author:溪云阁* @date:2020年5月29日*/public enum ExcelTypeEnum {XLS("xls"), XLSX("xlsx");private String value;private ExcelTypeEnum(String value) {this.value = value;}public String getValue() {return value;}public void setValue(String value) {this.value = value;}
}/*** Excel导出工具类* @author:溪云阁* @date:2020年5月29日*/
@Component
public class ExcelExportUtils {@Autowiredprivate HttpServletResponse response;/*** 导出excel* @author 溪云阁* @param list 泛型数据* @param title 标题* @param sheetName sheet的名称* @param pojoClass 需要导出的对象* @param fileName 文件名称* @param isCreateHeader 是否创建表头* @throws IOException void*/public void exportExcel(List<?> list, Class<?> pojoClass, String title, String sheetName, String fileName,boolean isCreateHeader) throws IOException {final ExportParams exportParams = new ExportParams(title, sheetName, ExcelType.XSSF);exportParams.setCreateHeadRows(isCreateHeader);baseExport(list, pojoClass, fileName, exportParams);}/*** 导出excel* @author 溪云阁* @param list 泛型数据* @param title 标题* @param sheetName sheet的名称* @param pojoClass 需要导出的对象* @param fileName 文件名称* @param response* @throws IOException void*/public void exportExcel(List<?> list, Class<?> pojoClass, String title, String sheetName, String fileName)throws IOException {baseExport(list, pojoClass, fileName, new ExportParams(title, sheetName, ExcelType.XSSF));}/*** 导出excel* @author 溪云阁* @param list 泛型数据* @param pojoClass 需要导出的对象* @param fileName 文件名称* @param exportParams 文件书香* @param response* @throws IOException void*/public void exportExcel(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams)throws IOException {baseExport(list, pojoClass, fileName, exportParams);}/*** 多个sheet导出* @author 溪云阁* @param list* @param fileName* @throws IOException void*/public void exportExcel(List<Map<String, Object>> list, String fileName) throws IOException {baseExport(list, fileName);}/*** 最基础的对象导出* @author 溪云阁* @param list 数据列表* @param pojoClass 导出对象* @param fileName 文件名称* @param exportParams 导出文件属性* @throws IOException void*/private void baseExport(List<?> list, Class<?> pojoClass, String fileName, ExportParams exportParams)throws IOException {final Workbook workbook = ExcelExportUtil.exportExcel(exportParams, pojoClass, list);downLoadExcel(fileName, workbook);}/*** 最基础的多sheet导出* @author 溪云阁* @param list 多个不同数据对象的列表* @param fileName 文件名称* @throws IOException void*/private void baseExport(List<Map<String, Object>> list, String fileName) throws IOException {final Workbook workbook = ExcelExportUtil.exportExcel(list, ExcelType.HSSF);downLoadExcel(fileName, workbook);}/*** 文件下载* @author 溪云阁* @param fileName 文件名称* @param workbook exce对象* @throws IOException void*/private void downLoadExcel(String fileName, Workbook workbook) throws IOException {ServletOutputStream output = null;try {final String downloadName = URLEncoder.encode(fileName + "." + ExcelTypeEnum.XLSX.getValue(), "UTF-8");response.setCharacterEncoding("UTF-8");response.setHeader("content-Type", "application/vnd.ms-excel");response.setHeader("Content-Disposition", "attachment;filename=" + downloadName);output = response.getOutputStream();workbook.write(output);}catch (final Exception e) {throw new IOException(e.getMessage());}finally {if (output != null) {output.flush();output.close();}}}}/*** Excel导入工具类* @author:溪云阁* @date:2020年5月29日*/
@Component
public class ExcelImportUtils {/*** 从指定位置获取文件后进行导入* @author 溪云阁* @param filePath 文件路径* @param titleRows 表格标题行数,默认0* @param headerRows 表头行数,默认1* @param pojoClass 上传后需要转化的对象* @return* @throws IOException List<T>*/public <T> List<T> importExcel(String filePath, Integer titleRows, Integer headerRows, Class<T> pojoClass)throws Exception {if (Strings.isEmpty(filePath)) {return null;} else {final ImportParams params = new ImportParams();// 表格标题行数,默认0params.setTitleRows(titleRows);// 表头行数,默认1params.setHeadRows(headerRows);// 是否需要保存上传的Excelparams.setNeedSave(true);// 保存上传的Excel目录params.setSaveUrl("/excel/");return ExcelImportUtil.importExcel(new File(filePath), pojoClass, params);}}/*** 上传文件导入* @author 溪云阁* @param file* @param titleRows 标题行* @param headerRows 表头行* @param needVerfiy 是否检验excel内容* @param pojoClass 导入的对象* @return* @throws Exception List<T>*/public <T> List<T> importExcel(MultipartFile file, Integer titleRows, Integer headerRows, boolean needVerfiy,Class<T> pojoClass) throws Exception {if (file == null) {return null;} else {return baseImport(file.getInputStream(), titleRows, headerRows, needVerfiy, pojoClass);}}/*** 最基础导入* @author 溪云阁* @param inputStream* @param titleRows 表格标题行数,默认0* @param headerRows 表头行数,默认1* @param needVerify 是否需要检测excel* @param pojoClass 导入的对象* @return* @throws IOException List<T>*/private <T> List<T> baseImport(InputStream inputStream, Integer titleRows, Integer headerRows,boolean needVerify, Class<T> pojoClass) throws Exception {if (inputStream == null) {return null;} else {final ImportParams params = new ImportParams();params.setTitleRows(titleRows);params.setHeadRows(headerRows);params.setSaveUrl("/excel/");params.setNeedSave(true);params.setNeedVerify(needVerify);return ExcelImportUtil.importExcel(inputStream, pojoClass, params);}}}

编写导入导出对象

这里,为了覆盖更全一点,我分别用了不同的类型来做实验,数字类型采用NumberFormat进行格式化操作。

/*** 用户信息* @author:溪云阁* @date:2020年5月29日*/
public class User implements Serializable {// 数字格式化private NumberFormat nf = NumberFormat.getNumberInstance();private static final long serialVersionUID = 1L;@Excel(name = "用户id", orderNum = "0", width = 15)@Setter@Getterprivate long userId;@Excel(name = "性别", orderNum = "1", width = 15, replace = { "男_1", "女_2" }, suffix = "孩")@Setter@Getterprivate int sex;@Excel(name = "金钱", orderNum = "2", width = 15)@Setterprivate double money;public String getMoney() {return nf.format(money);}@Excel(name = "用户信息", orderNum = "3", width = 15)@Setter@Getterprivate String userName;@Excel(name = "价格", orderNum = "4", width = 15)@Setter@Getterprivate float price;@Excel(name = "时间", orderNum = "5", width = 15, format = "yyyy-MM-dd")@Setter@Getterprivate Date now;}

编写测试方法

/*** excel导入导出* @author:溪云阁* @date:2020年5月29日*/
@Api(tags = { "APP服务:数据接口" })
@RestController
@RequestMapping("view/ie")
public class ImportExportController {@Autowiredprivate ExcelExportUtils excelExportUtils;@Autowiredprivate ExcelImportUtils excelImportUtils;/*** 导出用户信息* @author 溪云阁 void*/@ApiOperation(value = "导出excel")@GetMapping(value = "/exportExcel")public void exportExcel() throws Exception {final List<User> userList = new ArrayList<>();for (int i = 0; i < 10; i++) {final User user = new User();user.setUserId(i);user.setSex(1);user.setMoney(12332123 + i);user.setUserName("小明" + i);user.setPrice(23.1f + i);user.setNow(new Date());userList.add(user);}excelExportUtils.exportExcel(userList, User.class, "用户信息", "员工信息的sheet", "用户信息表");}/*** 导入用户信息* @author 溪云阁* @param file* @return* @throws IOException Object*/@ApiOperation(value = "导入excel")@GetMapping(value = "/importExcel")public ResponseMsg<List<User>> importExcel(@RequestParam("file") MultipartFile file) throws Exception {final List<User> userList = excelImportUtils.importExcel(file, 1, 1, false, User.class);return MsgUtils.buildSuccessMsg(userList);}}

导出结果

在导出中,直接在浏览器输入地址接口,结果如截图所示

其中,金钱,时间上,我们分别进行了格式化

cd97c720543d11ea9a85ce310b1b7996.png

导入结果

把刚刚导出来的文件,直接导入进去,这里采用postMan进行操作,其中要注意的点,我已经用红色的圈圈标出来。

从实验结果上看,已经可以导入进去,并且把数据返回来

6e29bdd0c7c34ea3c3bc51cf94dcca58.png

问题

在导入进去的构成中,这里留下一个问题给同学自行解决,导入的金额是0,可自行研究解决

来源:公众号-程序员闪充宝
http://www.lbrq.cn/news/2553175.html

相关文章:

  • 微博营销网站长春网络优化哪个公司在做
  • 网站建设制作费新闻发稿公司
  • 哈尔滨最新疫情防控政策海淀区seo多少钱
  • 免费网站制作效果网站建设公司推荐
  • 可以做问卷调查的网站百度推广客户端怎样注册
  • 网站开发设计框图网页搜索引擎
  • 营销网站建设规划seo交流群
  • 中国国际空间站拒绝十个国家考证培训机构
  • 粮食网站建设的背景及意义今天重大国际新闻
  • 做自媒体需要哪些网站seo短视频网页入口引流下载
  • 网站设计哪家便宜手机百度安装下载
  • wordpress 菜单 导航代码seo推广沧州公司电话
  • 个人 可以备案做分类信息网站吗重庆网站网络推广
  • 网站建设 我们是专业的网络营销平台
  • 企业网站设计策划大数据技术主要学什么
  • 银川网站建设一条龙谷歌google中文登录入口
  • 视频网站发展好应该怎么做百度指数有三个功能模块
  • 自己电脑做网站服务器广域网访问西安网站关键词优化推荐
  • 提供商城网站制作最新国际消息
  • 佛山网站建设no.1怎么做电商平台
  • cad如何做图纸模板下载网站kol合作推广
  • 商城网站建设费用郑州网站推广公司排名
  • 网站建设项目描述范文直播引流推广方法
  • 用手机自创游戏郑州seo实战培训
  • 做网站需要做h5吗网站seo排名公司
  • 泰州专业制作网站南京seo排名
  • 网站被host重定向处理怎么做网站平台
  • 用来查数据的网站怎么建设网站优化公司认准乐云seo
  • php网站打开一片空白1688网站
  • 做视频类网站需要哪些许可证百度经验首页官网
  • 力扣热题100---------206.反转链表
  • 江协科技STM32 12-2 BKP备份寄存器RTC实时时钟
  • 【Flask基础②】 | 路由、响应与异常处理
  • 《棒球规则》棒球界外球怎么算·棒球1号位
  • Kruskal算法
  • 机器学习第二课之线性回归的实战技巧