96SEO 2026-02-19 09:45 6
功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员

POI是Apache软件基金会的开源项目POI提供API给Java程序对Microsoft
功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员
就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板
--dependencygroupIdcn.afterturn/groupIdartifactIdeasypoi-spring-boot-starter/artifactIdversion4.2.0/version/dependency
起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col
作用到filed上面,是对Excel一列的一个描述ExcelCollection
表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示ExcelEntity
表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段ExcelIgnore
和名字一样表示这个字段被忽略跳过这个导导出ExcelTarget
这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理
[boolean][是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)]
[String][指定生成Excel中列的顺序,按照数字自然顺序排序]
[boolean][是否是导入字段,如果没有说明是错误的Excel]
[String][相当于同时设置了exportFormat和importFormat]
{Excel(name编号,orderNum1,replace
id;Excel(name姓名,orderNum2)private
name;Excel(name年龄,orderNum4,suffix
SET和其他属性ExcelEntity(name身份信息)private
orderNum:[int][用来指定导出excel集合内列的顺序]
ExcelCollection(name订单,orderNum
{ExcelIgnoreExcel(name编号,orderNum1)private
id;Excel(name姓名,orderNum2)private
name;Excel(name年龄,orderNum3,suffix
age;Excel(name生日,orderNum4,width
User();user.setId(String.valueOf(i));user.setName(向阳);user.setAge(16i);user.setBirthday(new
Date());user.setStatus(String.valueOf(i%2));users.add(user);}return
ExcelExportUtil.exportExcel(new
FileOutputStream(C:\\Users\\86187\\Desktop\\user.xls);workbook.write(outputStream);outputStream.close();workbook.close();}
往往有时候导出的对象中含有数组或者集合,需要导出这样的数据可以直接使用Excel进行导出
StringBuilder();this.hobby.forEach(s
{//定义对象ExcelEntity(namecard)private
User();user.setId(String.valueOf(i));user.setName(向阳);user.setAge(16i);user.setBirthday(new
Date());user.setStatus(String.valueOf(i%2));user.setHobby(Arrays.asList(抽烟,喝酒,烫头));user.setCard(new
Card(11000103422323212342,北京市朝阳区));users.add(user);}return
ExcelExportUtil.exportExcel(new
FileOutputStream(C:\\Users\\86187\\Desktop\\user.xls);
往往随着业务不断变化,可能需要在导出excel时将图片信息也一并导出,如商品图标,用户头像信息等数据,这个时候easypoi该如何处理呢?
User();user.setId(String.valueOf(i));user.setName(向阳);user.setAge(16i);user.setBirthday(new
Date());user.setStatus(String.valueOf(i%2));user.setHobby(Arrays.asList(抽烟,喝酒,烫头));user.setCard(new
Card(11000103422323212342,北京市朝阳区));user.setPhoto(C:\\Users\\86187\\Desktop\\桌面.png);users.add(user);}return
ImportParams();params.setTitleRows(1);
//列名占几行params.setNeedSave(true);params.setSaveUrl(I:\\msb_hejiayun\\easypoi_boot\\src\\main\\resources\\static);ListEmp
ExcelImportUtil.importExcel(new
FileInputStream(C:\\Users\\86187\\Desktop\\emp.xls),
params);list.forEach(System.out::println);}
设置下值,就是表示表头必须至少包含的字段,如果缺一个就是不合法的excel,不导入
password;Excel(name注册时间,orderNum4,format
功能描述根据接收的Excel文件来导入多个sheet,根据索引可返回一个集合*
根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页ImportParams
第几个sheet页params.setStartSheetIndex(sheetIndex);params.setTitleRows(titleRows);params.setHeadRows(headerRows);//是否保存本次上传的excelparams.setNeedSave(false);//表示表头必须包含的字段,不包含
ExcelImportUtil.importExcel(new
C:\\Users\\86187\\Desktop\\login.xls;ListLoginUser
this.importMultiSheet(excelPath,
LoginUser.class);loginUserList.forEach(System.out::println);ListLoginUrl
this.importMultiSheet(excelPath,
LoginUrl.class);loginUrlList.forEach(System.out::println);}
{//创建参数对象,用于设定Excel的sheet页内容等信息ExportParams
ExportParams();//设置sheet的名称loginUserExportParams.setSheetName(登录用户);loginUserExportParams.setTitle(登录用户列表);//使用map创建sheet1HashMapString,
HashMap();//设置titlesheet1Map.put(title,loginUserExportParams);//设置导出的实体类型sheet1Map.put(entity,LoginUser.class);//sheet中要填充的数据sheet1Map.put(data,objects[0]);/////创建参数对象,用于设定Excel的sheet页内容等信息ExportParams
ExportParams();//设置sheet的名称loginUrlExportParams.setSheetName(URL路径);loginUrlExportParams.setTitle(URL路径);//使用map创建sheet2HashMapString,
HashMap();//设置titlesheet2Map.put(title,loginUrlExportParams);//设置导出的实体类型sheet2Map.put(entity,LoginUrl.class);//sheet中要填充的数据sheet2Map.put(data,objects[1]);//将sheet1和sheet2
ArrayList();sheetList.add(sheet1Map);sheetList.add(sheet2Map);//执行方法Workbook
ExcelExportUtil.exportExcel(sheetList,
ExcelType.HSSF);FileOutputStream
FileOutputStream(C:\\Users\\86187\\Desktop\\exportLogin.xls);workbook.write(outputStream);outputStream.close();workbook.close();}
http://127.0.0.1:8080));sheet2.add(new
http://127.0.0.1:8080/logingout));exportMultiSheet(sheet1,sheet2);}
xmlns:thhttp://www.thymeleaf.org
charsetUTF-8title导入excel的主页面/titlelink
hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css
integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u
classcol-md-12h1选择Excel文件导入到数据中/h1form
classcol-md-12h1显示导入数据列表/h1table
trthID编号/thth订单编号/thth课程名称/thth课程简介/thth课程价格/th/trtr
th:text${course.price}/td/tr/tablehra
courseService;RequestMapping(/findAll)public
courseService.findAll();System.out.println(courses);model.addAttribute(courses,courses);return
index;}//导入ExcelRequestMapping(/importExcel)public
ImportParams();params.setTitleRows(1);
//设置1级标题行为一行params.setHeadRows(1);
ExcelImportUtil.importExcel(excelFile.getInputStream(),
params);courseService.save(courseList);return
redirect:/course/findAll;}//导出ExcelRequestMapping(/exportExcel)public
exportExcel(HttpServletResponse
Exception{//查询数据库的所有数据ListCourse
courseService.findAll();//生成ExcelWorkbook
ExcelExportUtil.exportExcel(new
courseList);response.setHeader(content-disposition,attachment;fileName
URLEncoder.encode(课程信息列表.xls,UTF-8));ServletOutputStream
response.getOutputStream();workbook.write(outputStream);outputStream.close();workbook.close();}}
courseDao.findAll();}Overridepublic
不使用Excel中的编号courseDao.save(course);});}
http://mybatis.org/dtd/mybatis-3-mapper.dtd
namespacecom.mashibing.mapper.CourseDao!--查询所有--select
(#{cid},#{orderno},#{cname},#{brief},#{price})/insert
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback