
 
 
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
        table inbndhtable = null;
        table transhtable = null;
        conn = hbasedatasource.getconnection();
        inbndhtable = htableutil.gettable(conn, hbasename1);
        transhtable = htableutil.gettable(conn, hbasename2);
        scan inbndscan = new scan();
        inbndscan.setcaching(conn.getconfiguration().getint(hconstants.hbase_client_scanner_caching, 10000));
        inbndscan.setcacheblocks(true);
        inbndscan.setrowprefixfilter(bytes.tobytes(rowkey));
        scan transscan = new scan();
        transscan.setcaching(conn.getconfiguration().getint(hconstants.hbase_client_scanner_caching, 10000));
        transscan.setcacheblocks(true);
        transscan.setrowprefixfilter(bytes.tobytes(rowkey));        
 
### 2.获取数据
代码如下(示例):
 
map<string, map<string, byte[]>> inbndckiresults = htableutil.scan(inbndhtable, inbndscan);
 map<string, map<string, byte[]>> transckiresults = htableutil.scan(transhtable, transscan);
---
## 三、向excel模板写入相关数据,并生成本地文件
 
public void exporttemplatesendemail(list platinumforecastlists, list platinumteansforecastlists) throws exception {
 date date = new date();//取时间
 string todaystr = sdf1.format(date);
 //读取excel模板
 classpathresource resource = new classpathresource(template);
 inputstream in = resource.getinputstream();
 xssfworkbook wb = new xssfworkbook(in);
 xssfsheet indndsheet = wb.getsheetat(0);
 xssfsheet transsheet = wb.getsheetat(1);
    xssfcellstyle style = wb.createcellstyle();
    //单元格边框属性设置
    style.setborderbottom(borderstyle.thin);
    style.setborderleft(borderstyle.thin);
    style.setborderright(borderstyle.thin);
    style.setbordertop(borderstyle.thin);
    indndsheet.createrow(1).createcell(0).setcellvalue("日期:" + todaystr);
    transsheet.createrow(1).createcell(0).setcellvalue("日期:" + todaystr);
    indndsheet.getrow(1).getcell(0).setcellstyle(style);
    transsheet.getrow(1).getcell(0).setcellstyle(style);
    indndsheet.getrow(1).createcell(7).setcellstyle(style);
    transsheet.getrow(1).createcell(10).setcellstyle(style);
    style.setverticalalignment(verticalalignment.center);
    style.setalignment(horizontalalignment.center);
    for (int i = 0; i < platinumforecastlists.size(); i++) {
        platinuminbndforecastbean platinumforecastbean = (platinuminbndforecastbean) platinumforecastlists.get(i);
        // row从0开始  cell 从0开始的
        indndsheet.createrow(i + 3).createcell(0).setcellvalue(i + 1);
        indndsheet.getrow(i + 3).createcell(1).setcellvalue(platinumforecastbean.getfullname());
        indndsheet.getrow(i + 3).createcell(2).setcellvalue(platinumforecastbean.getdeparturetime());
        indndsheet.getrow(i + 3).createcell(3).setcellvalue(platinumforecastbean.getflightnum());
        indndsheet.getrow(i + 3).createcell(4).setcellvalue(platinumforecastbean.getfqtvnumber());
        indndsheet.getrow(i + 3).createcell(6).setcellvalue(platinumforecastbean.getcheckininfostatus());
        indndsheet.getrow(i + 3).createcell(7).setcellvalue(platinumforecastbean.getterminal());
        indndsheet.getrow(i + 3).getcell(0).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(1).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(2).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(3).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(4).setcellstyle(style);
        indndsheet.getrow(i + 3).createcell(5).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(6).setcellstyle(style);
        indndsheet.getrow(i + 3).getcell(7).setcellstyle(style);
    }
    for (int i = 0; i < platinumteansforecastlists.size(); i++) {
        platinumtransforecastbean platinumforecastbean = (platinumtransforecastbean) platinumteansforecastlists.get(i);
        // row从0开始  cell 从0开始的
        transsheet.createrow(i + 3).createcell(0).setcellvalue(i + 1);
        transsheet.getrow(i + 3).createcell(1).setcellvalue(platinumforecastbean.getinbndfltnum());
        transsheet.getrow(i + 3).createcell(2).setcellvalue(platinumforecastbean.getarrtime());
        transsheet.getrow(i + 3).createcell(3).setcellvalue(platinumforecastbean.getlastseg());
        transsheet.getrow(i + 3).createcell(4).setcellvalue(platinumforecastbean.getfullname());
        transsheet.getrow(i + 3).createcell(5).setcellvalue(platinumforecastbean.gettransfltnum());
        transsheet.getrow(i + 3).createcell(6).setcellvalue(platinumforecastbean.getdeptime());
        transsheet.getrow(i + 3).createcell(7).setcellvalue(platinumforecastbean.getnextseg());
        transsheet.getrow(i + 3).createcell(9).setcellvalue(platinumforecastbean.getfqtvnumber());
        transsheet.getrow(i + 3).createcell(10).setcellvalue(platinumforecastbean.gettelnum());
        transsheet.getrow(i + 3).getcell(0).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(1).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(2).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(3).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(4).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(5).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(6).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(7).setcellstyle(style);
        transsheet.getrow(i + 3).createcell(8).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(9).setcellstyle(style);
        transsheet.getrow(i + 3).getcell(10).setcellstyle(style);
    }
    indndsheet.createfreezepane(0, 3, 0, 3);
    transsheet.createfreezepane(0, 3, 0, 3);
    //写入磁盘保存文件
    fileoutputstream output = new fileoutputstream(patinumfilename);
    wb.write(output);
    output.close();
    //作为输出流发邮件
    bytearrayoutputstream bytearrayoutputstream = new bytearrayoutputstream();
    wb.write(bytearrayoutputstream);
    list<string> emaillist = new arraylist<>();
    emaillist.add("自定义邮箱");
    for (string email : emaillist) {
        boolean rst = sendmail(new bytearrayinputstream(bytearrayoutputstream.tobytearray()), "白金卡预报", email);
        if (rst) {
            logger.info("向" + email + "邮件发送成功!");
        } else {
            logger.info("向" + email + "邮件发送失败!");
        }
    }
}
 
## 四、将新生成的excel以流的方式,进行邮件发送
 
public boolean sendmail(inputstream is, string filename, string tomail) {
 transport transport = null;
 try {
 system.setproperty(“mail.mime.splitlongparameters”, “false”);
 properties props = new properties();
 // 设置发送邮件的邮件服务器的属性(这里使用网易的smtp服务器)
 props.put(“mail.smtp.host”, host);
 props.put(“mail.smtp.port”, port);
 props.put(“mail.smtp.socketfactory.class”, “javax.net.ssl.sslsocketfactory”);
 props.put(“mail.smtp.ssl.trust”, “*”);
 // 需要经过授权,也就是有户名和密码的校验,这样才能通过验证(一定要有这一条)
 props.put(“mail.smtp.auth”, “true”);
 // 用刚刚设置好的props对象构建一个session
 session session = session.getdefaultinstance(props);
 // 有了这句便可以在发送邮件的过程中在console处显示过程信息,供调试使
 // 用(你可以在控制台(console)上看到发送邮件的过程)
 session.setdebug(false);
 // 用session为参数定义消息对象
 mimemessage message = new mimemessage(session);
 // 加载发件人地址
 message.setfrom(new internetaddress(username));
 // 加载收件人地址
 message.addrecipient(message.recipienttype.to, new internetaddress(tomail));
 // 加载标题
 message.setsubject(filename);
        // 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
        multipart multipart = new mimemultipart();
        // 设置邮件的文本内容
        bodypart contentpart = new mimebodypart();
        contentpart.settext("自定义邮件内容");
        multipart.addbodypart(contentpart);
        // 添加附件
        bodypart messagebodypart = new mimebodypart();
        datasource source = new bytearraydatasource(is, "application/msexcel");
        // 添加附件的内容
        messagebodypart.setdatahandler(new datahandler(source));
        // 添加附件的标题
        // 这里很重要,通过下面的base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
        messagebodypart.setfilename(mimeutility.encodetext(filename + ".xlsx"));
        multipart.addbodypart(messagebodypart);
 

 
 
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
            
                                            
                                            
                                            
发表评论