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

网站建设全包公司推荐邢台网站建设联系电话

网站建设全包公司推荐,邢台网站建设联系电话,手工制作月饼,个性化网站建设费用Apache POI是Apache软件基金会的开源项目#xff0c;POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂#xff0c;学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出…Apache POI是Apache软件基金会的开源项目POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 Apache POI 代码实现复杂学习成本较高。 Easypoi 功能如同名字easy,主打的功能就是容易,让一个没见接触过poi的人员 就可以方便的写出Excel导出,Excel模板导出,Excel导入,Word模板导出,通过简单的注解和模板 语言(熟悉的表达式语法),完成以前复杂的写法 EasyPOI官网EasyPoi教程_V1.0 环境搭建 1搭建springboot项目 2导入依赖 !-- 引入easyPOI --dependencygroupIdcn.afterturn/groupIdartifactIdeasypoi-spring-boot-starter/artifactIdversion4.2.0/version/dependency EasyPOI相关注解 easypoi 起因就是Excel的导入导出,最初的模板是实体和Excel的对应,model--row,filed--col 这样利用注解我们可以和容易做到excel到导入导出 经过一段时间发展,现在注解有5个类分别是 Excel 作用到filed上面,是对Excel一列的一个描述ExcelCollection 表示一个集合,主要针对一对多的导出,比如一个老师对应多个科目,科目就可以用集合表示ExcelEntity 表示一个继续深入导出的实体,但他没有太多的实际意义,只是告诉系统这个对象里面同样有导出的字段ExcelIgnore 和名字一样表示这个字段被忽略跳过这个导导出ExcelTarget 这个是作用于最外层的对象,描述这个对象的id,以便支持一个对象可以针对不同导出做出不同处理 ExcelTarget 1.说明 - 用在实体类上标识是一个可以通过EasyPOI导入导出的实体类 - 相关属性: value:  [String][定义id唯一标识,不能重复]    常用 height: [Double][定义单元格高度] fontSize:[short ][定义单元格字体大小] 2.使用 ExcelTarget(users) public class User implements Serializable {//..... 省略属性 相关GET,SET方法 } Excel # 1.说明 - 用在filed(属性)上面,是对Excel一列的一个描述 - 常用属性:  name :  [String][生成Excel表格中列名] needMerge: [boolean][是否需要纵向合并单元格(用于含有list中,单个的单元格,合并list创建的多个row)] orderNum :       [String][指定生成Excel中列的顺序,按照数字自然顺序排序] savePath :       [String][指定导入Excel中图片的保存路径] type :       [String][导出类型 1 是文本 2 是图片,3 是函数,10 是数字 默认是文本] width    : [Double][指定导出Excel时列的宽度] isImportField:   [boolean][是否是导入字段,如果没有说明是错误的Excel] exportFormat:    [String][导出Excel的时间格式] importFormat:    [String][导入Excel的时间格式] format :       [String][相当于同时设置了exportFormat和importFormat] imageType:   [int   ][导出类型 1 从file读取 2 是从数据库中读取 默认是文件 同样导入也是一样的] suffix :       [String][文字后缀,如% 90 变成90%] 2.使用 public class User implements Serializable {Excel(name编号,orderNum1,replace {xxx_1,nnn_2})private String id;Excel(name姓名,orderNum2)private String name;Excel(name年龄,orderNum4,suffix $)private Integer age;Excel(name生日,orderNum 3,width 20.0,exportFormat yyyy年MM月dd日)private Date bir;//...省略GET、SET方法 } ExcelEntity 1.说明 - 标记是不是导出excel 标记为实体类,一遍是一个内部属性类,标记是否继续穿透 - 常用属性: name: [String][定义唯一标识] 2.使用 ExcelTarget(users) public class User implements Serializable { //... 省略GET SET和其他属性ExcelEntity(name身份信息)private Card card; }ExcelTarget(card) public class Card implements Serializable {Excel(name身份证号,orderNum 6)private String id;Excel(name家庭住址,orderNum 7)private String address; } ExcelCollection 1.说明 - 一对多的集合注解,用以标记集合是否被数据以及集合的整体排序 - 常用属性: name: [String][定义集合列名] orderNum:[int][用来指定导出excel集合内列的顺序] type:     [Class\?][用来指定导出是创建对象类型]  2.使用 ExcelTarget(users) public class User implements Serializable { //....省略GET SET其他属性 ExcelCollection(name订单,orderNum 5)private ListOrder orders; }ExcelTarget(orders) public class Order implements Serializable { //....省略GET SET方法Excel(name 订单编号)private String id;Excel(name 订单名称)private String name; } ExcelIgnore  .说明 用在属性上导出Excel时忽略这个属性 导出Excel 导出基本数据  注意:导出Excel的对象必须实现对象序列化接口 1定义对象 Data ExcelTarget(users) public class User implements Serializable {ExcelIgnoreExcel(name编号,orderNum1)private String id;Excel(name姓名,orderNum2)private String name;Excel(name年龄,orderNum3,suffix )private Integer age;Excel(name生日,orderNum4,width 35.0,format yyyy-MM-dd HH:mm:ss)private Date birthday;Excel(name 状态 ,orderNum5,replace {激活_1,未激活_0})private String status; }2定义测试数据 public ListUser getUsers(){ListUser users new ArrayList();for (int i 0; i 10; i) {User user new 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 users;} 3导出Excel Testpublic void testExport() throws Exception {//1.配置对象 2.导出类型 3.导出数据集合Workbook workbook ExcelExportUtil.exportExcel(new ExportParams(用户列表, 测试), User.class, getUsers());FileOutputStream outputStream new FileOutputStream(C:\\Users\\86187\\Desktop\\user.xls);workbook.write(outputStream);outputStream.close();workbook.close();} 4查看Excel 导出List集合 1说明 - 往往有时候导出的对象中含有数组或者集合,需要导出这样的数据可以直接使用Excel进行导出 2使用 Data ExcelTarget(users) public class User implements Serializable {Excel(name 爱好,width20.0,orderNum 6)private ListString hobby; } 3) 改换格式 // Excel(name 爱好,width20.0,orderNum 6)ExcelIgnoreprivate ListString hobby;Excel(name 爱好,width20.0,orderNum 6)private String hobbystr;//自定义格式public String getHobbystr() {StringBuilder sb new StringBuilder();this.hobby.forEach(s - sb.append(s).append(、) );return sb.toString();} 导出对象中含有的对象 - 导出对象中含有对象的Excel Data ExcelTarget(users) public class User implements Serializable {//定义对象ExcelEntity(namecard)private Card card; }ExcelTarget(card) public class Card implements Serializable {Excel(name身份证号,orderNum 6)private String id;Excel(name家庭住址,orderNum 7)private String address; } 为导出对象赋值 public ListUser getUsers(){ListUser users new ArrayList();for (int i 0; i 10; i) {User user new 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 users; } 导出Excel //1.配置对象 2.导出类型 3.导出数据集合 Workbook workbook ExcelExportUtil.exportExcel(new ExportParams(用户列表, 测试), User.class, getUsers()); FileOutputStream outputStream new FileOutputStream(C:\\Users\\86187\\Desktop\\user.xls); workbook.write(outputStream); outputStream.close(); workbook.close(); 导出图片 - 往往随着业务不断变化,可能需要在导出excel时将图片信息也一并导出,如商品图标,用户头像信息等数据,这个时候easypoi该如何处理呢? ExcelTarget(users) public class User implements Serializable {Excel(name 头像信息,type 2,orderNum 0,width 12,height 12)private String photo;//定义头像 直接写指定图片路径 } 准备图片放入指定路径中,并在测试数据中进行赋值  public ListUser getUsers(){ListUser users new ArrayList();for (int i 0; i 10; i) {User user new 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 users; } 导出Excel查看结果 导入Excel  导入基本数据 1) 准备导入的目标Excel 2) 定义导出数据基本对象 Data ExcelTarget(emps) public class Emp implements Serializable {Excel(name编号)private String id;Excel(name姓名)private String name;Excel(name年龄)private Integer age;Excel(name生日,format yyyy-MM-dd HH:mm:ss)private Date bir;Excel(name状态,replace {激活_1,未激活_0})private String status;Excel(name头像,type 2,savePath I:\\resources\\static)private String photo; } 3) 导入excel中数据  Testpublic void testImportExcel()throws Exception{ImportParams params new ImportParams();params.setTitleRows(1); //标题列占几行params.setHeadRows(1); //列名占几行params.setNeedSave(true);params.setSaveUrl(I:\\msb_hejiayun\\easypoi_boot\\src\\main\\resources\\static);ListEmp list ExcelImportUtil.importExcel(new FileInputStream(C:\\Users\\86187\\Desktop\\emp.xls), Emp.class, params);list.forEach(System.out::println);} 多Sheet页导入导出  - 读取指定的sheet 比如要读取上传得第二个sheet 那么需要把startSheetIndex 1 就可以了 - 读取几个sheet  比如读取前2个sheet,那么 sheetNum2 就可以了 - 读取第二个到第五个sheet 设置 startSheetIndex 1 然后sheetNum 4 - 读取全部的sheet sheetNum  设置大点就可以了 - 判断一个Excel是不是合法的Excel  importFields 设置下值,就是表示表头必须至少包含的字段,如果缺一个就是不合法的excel,不导入   准备表格,创建对应实体 Data ExcelTarget(loginUser) public class LoginUser implements Serializable {Excel(name 用户ID,orderNum 1)private String id;Excel(name 昵称,orderNum 2)private String nickname;Excel(name 密码,orderNum 3)private String password;Excel(name注册时间,orderNum4,format yyyy-MM-dd HH:mm:ss)private Date createTime;Excel(name 状态 ,orderNum5,replace {VIP_1,普通用户_0})private String status;} Data ExcelTarget(loginUrl) public class LoginUrl implements Serializable {Excel(name 用户ID,orderNum 1)private String userId;Excel(name 请求类型,orderNum 2)private String type;Excel(name 访问地址,orderNum 3)private String url; } 多sheet导入方法 /*** 功能描述根据接收的Excel文件来导入多个sheet,根据索引可返回一个集合* param filePath 导入文件路径* param sheetIndex 导入sheet索引* param titleRows 表标题的行数* param headerRows 表头行数* param pojoClass Excel实体类* return*/public static T ListT importMultiSheet(String filePath,int sheetIndex,Integer titleRows, Integer headerRows, ClassT pojoClass) {// 根据file得到Workbook,主要是要根据这个对象获取,传过来的excel有几个sheet页ImportParams params new ImportParams();// 第几个sheet页params.setStartSheetIndex(sheetIndex);params.setTitleRows(titleRows);params.setHeadRows(headerRows);//是否保存本次上传的excelparams.setNeedSave(false);//表示表头必须包含的字段,不包含 就报错.params.setImportFields(new String[]{用户ID});ListT list null;try {list ExcelImportUtil.importExcel(new FileInputStream(filePath), pojoClass, params);} catch (Exception e) {e.printStackTrace();}return list;} //测试多sheet导入Testpublic void testImportMultiSheet() throws Exception {String excelPath C:\\Users\\86187\\Desktop\\login.xls;ListLoginUser loginUserList this.importMultiSheet(excelPath, 0, 1, 1, LoginUser.class);loginUserList.forEach(System.out::println);ListLoginUrl loginUrlList this.importMultiSheet(excelPath, 1, 1, 1, LoginUrl.class);loginUrlList.forEach(System.out::println);} 多sheet导出方法 public void exportMultiSheet(Object... objects) throws Exception {//创建参数对象,用于设定Excel的sheet页内容等信息ExportParams loginUserExportParams new ExportParams();//设置sheet的名称loginUserExportParams.setSheetName(登录用户);loginUserExportParams.setTitle(登录用户列表);//使用map创建sheet1HashMapString, Object sheet1Map new HashMap();//设置titlesheet1Map.put(title,loginUserExportParams);//设置导出的实体类型sheet1Map.put(entity,LoginUser.class);//sheet中要填充的数据sheet1Map.put(data,objects[0]);/////创建参数对象,用于设定Excel的sheet页内容等信息ExportParams loginUrlExportParams new ExportParams();//设置sheet的名称loginUrlExportParams.setSheetName(URL路径);loginUrlExportParams.setTitle(URL路径);//使用map创建sheet2HashMapString, Object sheet2Map new HashMap();//设置titlesheet2Map.put(title,loginUrlExportParams);//设置导出的实体类型sheet2Map.put(entity,LoginUrl.class);//sheet中要填充的数据sheet2Map.put(data,objects[1]);//将sheet1和sheet2 进行包装ListMapString,Object sheetList new ArrayList();sheetList.add(sheet1Map);sheetList.add(sheet2Map);//执行方法Workbook workbook ExcelExportUtil.exportExcel(sheetList, ExcelType.HSSF);FileOutputStream outputStream new FileOutputStream(C:\\Users\\86187\\Desktop\\exportLogin.xls);workbook.write(outputStream);outputStream.close();workbook.close();} //测试多sheet导出Testpublic void testExportMultiSheet() throws Exception {ListLoginUser sheet1 new ArrayList();sheet1.add(new LoginUser(1001, 向阳, 123456, new Date(), 0));sheet1.add(new LoginUser(1002, 文渊, 123456, new Date(), 1));sheet1.add(new LoginUser(1003, 小李, 123456, new Date(), 0));ListLoginUrl sheet2 new ArrayList();sheet2.add(new LoginUrl(1001, get, http://127.0.0.1:8080));sheet2.add(new LoginUrl(1001, post, http://127.0.0.1:8080/logingout));exportMultiSheet(sheet1,sheet2);} 集成web实现导入导出 前端代码 !DOCTYPE html html langen xmlns:thhttp://www.thymeleaf.org headmeta charsetUTF-8title导入excel的主页面/titlelink relstylesheet hrefhttps://cdn.jsdelivr.net/npm/bootstrap3.3.7/dist/css/bootstrap.min.css integritysha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4VaPmSTsz/K68vbdEjh4u crossoriginanonymous /head body div classcontainer-fluiddiv classrowdiv classcol-md-12h1选择Excel文件导入到数据中/h1form th:action{/course/importExcel} methodpost enctypemultipart/form-data classform-inlinediv classform-groupinput classform-control typefile nameexcelFileinput typesubmit classbtn btn-danger value导入数据/div/form/divdiv classcol-md-12h1显示导入数据列表/h1table classtable table-bordered trthID编号/thth订单编号/thth课程名称/thth课程简介/thth课程价格/th/trtr th:eachcourse : ${courses}td th:text${course.cid}/tdtd th:text${course.orderno}/tdtd th:text${course.cname}/tdtd th:text${course.brief}/tdtd th:text${course.price}/td/tr/tablehra th:href{/course/exportExcel} classbtn btn-info 导出excel/a/div/div /div /body /html Controller层  Controller RequestMapping(/course) public class CourseController {Autowiredprivate CourseService courseService;RequestMapping(/findAll)public String findAll(Model model){ListCourse courses courseService.findAll();System.out.println(courses);model.addAttribute(courses,courses);return index;}//导入ExcelRequestMapping(/importExcel)public String importExcel(MultipartFile excelFile) throws Exception {ImportParams params new ImportParams();params.setTitleRows(1); //设置1级标题行为一行params.setHeadRows(1); //设置header标题行为一行ListCourse courseList ExcelImportUtil.importExcel(excelFile.getInputStream(), Course.class, params);courseService.save(courseList);return redirect:/course/findAll;}//导出ExcelRequestMapping(/exportExcel)public void exportExcel(HttpServletResponse response)throws Exception{//查询数据库的所有数据ListCourse courseList courseService.findAll();//生成ExcelWorkbook workbook ExcelExportUtil.exportExcel(new ExportParams(课程信息列表, 课程信息),Course.class, courseList);response.setHeader(content-disposition,attachment;fileName URLEncoder.encode(课程信息列表.xls,UTF-8));ServletOutputStream outputStream response.getOutputStream();workbook.write(outputStream);outputStream.close();workbook.close();}} Service层 public interface CourseService {//查询所有ListCourse findAll();//插入记录void save(ListCourse courses); }Service public class CourseServiceImpl implements CourseService {Autowiredprivate CourseDao courseDao;Overridepublic ListCourse findAll() {return courseDao.findAll();}Overridepublic void save(ListCourse courses) {courses.forEach(course - {course.setCid(null); //自动生成ID 不使用Excel中的编号courseDao.save(course);});} } dao层 Mapper public interface CourseDao {//查询所有ListCourse findAll();//插入记录void save(Course course); } XML  !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.mashibing.mapper.CourseDao!--查询所有--select idfindAll resultTypeCourseSELECT cid,orderno,cname,brief,price FROM course;/select!-- 插入记录 --insert idsave parameterTypeCourse INSERT INTO course VALUES (#{cid},#{orderno},#{cname},#{brief},#{price})/insert /mapper
http://www.yayakq.cn/news/6276/

相关文章:

  • 扬中网站推广价格功能性质网站
  • 上海网站建设专家网站做分屏好不好
  • 广州市建设工程检测协会网站天安云谷网站建设
  • 网页设计报告详细设计西安网站seo优化公司
  • 烟台市两学一做网站分析网站推广和优化的原因
  • 全球网站访问量排名网页数据可视化设计案例
  • 南京做网站seo的重庆建设网站哪家好
  • 网站设计与程序方向google adsense
  • 昆仑万维做网站宝塔面板一键部署wordpress打不开
  • 现在推广网站最好的方式网站备案拍照点
  • 备案的网站可以改域名吗wap网站和internet网站
  • 网站默认中文字体台州seo网站推广费用
  • wap网站 微信小程序域名注册需要多少钱
  • 网站升级建设中做游戏陪玩网站
  • 专业的网站建设服务交易平台哈尔滨网络公司案例
  • 网站后台购买网上政务服务平台入口
  • 子网站 两微一端的建设方案中国机房建设公司排名
  • 网站二级目录是什么建设银行手机外汇网站
  • 学院招生网站建设方案微信小程序开发图解案例教程
  • 注册网站如何备案赣州网络公司排名
  • vs网站制作教程苏州 中英文网站建设
  • 如何把网站放到空间别人可以访问wordpress建站安全吗
  • 东莞品牌网站建设去哪个网站有客户找做标书的
  • 网站商城具有哪些功能模块温州外经贸局网站
  • 如何修改网站后台的用户名和密码个人博客网站的建设结构图
  • 做亚克力在那个网站上好wordpress回帖可见
  • 河源今天发生的重大新闻哈西建站优化
  • 四川阿坝建设招标网站菲律宾网站网站建设
  • 网站建设报价分析危险网站解除
  • 彩票做网站网站如何做好内链