Java学习笔记:案例发送工资条到邮箱

上次完成到将个人所成税算了出来

现在要发送工资条到邮箱

定位到员工信息表,读取他对应的邮箱,发送邮箱 

准备工作完成

package Part4;

import com.yzk18.docs.ExcelHelpers;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

public class 计算个税并发送邮件1 {
    public static void main(String[] args) {
        java.text.DecimalFormat df=new java.text.DecimalFormat("#.##");
        Workbook wb = ExcelHelpers.openFile("d:/temp/2020年4月份工资表.xlsx");
        Sheet sheet=wb.getSheetAt(0);
        //for (int i=1;i<=sheet.getLastRowNum()-2;i++)
        for (int i=1;i<=sheet.getLastRowNum();i++)
        {
            String 姓名=ExcelHelpers.getCellStringValue(sheet,i,0);
            String 部门=ExcelHelpers.getCellStringValue(sheet,i,1);
            //遇到员工数据行结束,就break
            if (姓名==null||姓名.equals(""))
            {
                break;
            }
            //读取邮箱
            Workbook wb员工 = ExcelHelpers.openFile("d:/temp/员工信息表.xlsx");
            Sheet sheet部门 = wb员工.getSheet(部门);//找到员工信心表中这个部门的sheet
            //遍历员工信息表的部门sheet,找到员工的一行
            for(int row员工=1;row员工<=sheet部门.getLastRowNum();row员工++)
            {
                String row姓名= ExcelHelpers.getCellStringValue(sheet部门,row员工,0);
                if(row姓名.equals(姓名))
                {
                    //邮箱 = ExcelHelpers.getCellStringValue(sheet部门,row员工,3);
                    String 邮箱 = ExcelHelpers.getCellStringValue(sheet部门,row员工,3);
                    //System.out.println(姓名+","+邮箱);
                }
            }
            ExcelHelpers.close(wb员工);
            //System.out.println(姓名);

            double 基本工资=ExcelHelpers.getCellDoubleValue(sheet,i,2);
            double 绩效工资=ExcelHelpers.getCellDoubleValue(sheet,i,3);
            double 奖金=ExcelHelpers.getCellDoubleValue(sheet,i,4);
            Double 考勤罚款=ExcelHelpers.getCellDoubleValue(sheet,i,5);
            if (考勤罚款==null)
            {
                考勤罚款=0.0;
            }
            double 社保=ExcelHelpers.getCellDoubleValue(sheet,i,6);
            //应纳税所得额=基本工资+绩效工资+奖金+考勤罚款+社保-5000
            //个税=应纳税所得额*税率-速算扣除数
            double 应纳税所得额 = 基本工资+绩效工资+奖金+考勤罚款+社保-5000;
            double 税率;
            double 速算扣除数;
            if(应纳税所得额<=3000)
            {
                税率=0.03;
                速算扣除数=0;
            }
            else if(应纳税所得额>3000 && 应纳税所得额<=12000)
            {
                税率=0.1;
                速算扣除数=210;
            }
            //if(12000<应纳税所得额<=25000)
            else if(应纳税所得额>12000 && 应纳税所得额<=25000)
            {
                税率=0.2;
                速算扣除数=1410;
            }
            else if(应纳税所得额>25000 && 应纳税所得额 <=35000)
            {
                税率=0.25;	速算扣除数=2660;
            }
            else if(应纳税所得额>35000 &&  应纳税所得额<=55000)
            {
                税率=0.3;		速算扣除数=4410;
            }
            else if(应纳税所得额>55000 && 应纳税所得额<=80000)
            {
                税率=0.35;	速算扣除数=7160;
            }
            else
            {
                税率=0.45;	速算扣除数=15160;
            }
            double 个税=应纳税所得额*税率-速算扣除数;
            ExcelHelpers.setCellValue(sheet,i,7,个税);
            //System.out.println(基本工资+","+个税);
            double 实发工资 = 基本工资+绩效工资+奖金+考勤罚款+社保+个税;
            String text = 姓名+"你好,您的本月基本工资:"+df.format(基本工资)+",绩效工资:"+
                    df.format(绩效工资)+",奖金:"+df.format(奖金)+",考勤罚款:"+
                    df.format(考勤罚款)+",社保:"+df.format(社保)+",个税:"+
                    df.format(个税)+",实发工资:"+df.format(实发工资);
            System.out.println(text);
        }
        ExcelHelpers.saveToFile(wb,"d:/temp/2020年4月份工资表-算完个税.xlsx");
        ExcelHelpers.close(wb);
    }
}

完整代码

import com.yzk18.docs.ExcelHelpers;
import com.yzk18.net.MailSender;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;

import java.io.File;

public class 计算个税并发送邮件2 {
    public static void main(String[] args) {
        java.text.DecimalFormat df = new java.text.DecimalFormat("#.##");

        Workbook wb = ExcelHelpers.openFile("d:/2020年4月份工资表.xlsx");
        Sheet sheet = wb.getSheetAt(0);
        for(int i=1;i<=sheet.getLastRowNum();i++)
        {
            String 姓名 = ExcelHelpers.getCellStringValue(sheet,i,0);
            String 部门 = ExcelHelpers.getCellStringValue(sheet,i,1);
            String 邮箱=null;
            //遇到员工数据行结束,就break
            if(姓名==null||姓名.equals(""))
            {
                break;
            }
            //读取邮箱
            Workbook wb员工 = ExcelHelpers.openFile("d:/员工信息表.xlsx");
            Sheet sheet部门 = wb员工.getSheet(部门);// 找到员工信息表中这个部门的Sheet
            //遍历员工信息表的部门sheet,找到员工的一行
            for(int row员工=1;row员工<=sheet部门.getLastRowNum();row员工++)
            {
                String row姓名= ExcelHelpers.getCellStringValue(sheet部门,row员工,0);
                if(row姓名.equals(姓名))
                {
                    邮箱 = ExcelHelpers.getCellStringValue(sheet部门,row员工,3);
                    //String 邮箱 = ExcelHelpers.getCellStringValue(sheet部门,row员工,3);
                    System.out.println(姓名+","+邮箱);
                }
            }
            ExcelHelpers.close(wb员工);
            if(邮箱==null)
            {
                throw new RuntimeException("找不到员工"+姓名+"的邮箱");
            }
            double 基本工资 = ExcelHelpers.getCellDoubleValue(sheet,i,2);
            double 绩效工资 = ExcelHelpers.getCellDoubleValue(sheet,i,3);
            double 奖金 = ExcelHelpers.getCellDoubleValue(sheet,i,4);
            Double 考勤罚款 = ExcelHelpers.getCellDoubleValue(sheet,i,5);
            if(考勤罚款==null)
            {
                考勤罚款=0.0;
            }
            double 社保 = ExcelHelpers.getCellDoubleValue(sheet,i,6);
            //应纳税所得额=基本工资+绩效工资+奖金+考勤罚款+社保-5000
            //个税=应纳税所得额*税率-速算扣除数
            double 应纳税所得额 = 基本工资+绩效工资+奖金+考勤罚款+社保-5000;
            double 税率;
            double 速算扣除数;
            if(应纳税所得额<=3000)
            {
                税率=0.03;
                速算扣除数=0;
            }
            else if(应纳税所得额>3000 && 应纳税所得额<=12000)
            {
                税率=0.1;
                速算扣除数=210;
            }
            //if(12000<应纳税所得额<=25000)
            else if(应纳税所得额>12000 && 应纳税所得额<=25000)
            {
                税率=0.2;
                速算扣除数=1410;
            }
            else if(应纳税所得额>25000 && 应纳税所得额 <=35000)
            {
                税率=0.25;	速算扣除数=2660;
            }
            else if(应纳税所得额>35000 &&  应纳税所得额<=55000)
            {
                税率=0.3;		速算扣除数=4410;
            }
            else if(应纳税所得额>55000 && 应纳税所得额<=80000)
            {
                税率=0.35;
                速算扣除数=7160;
            }
            else
            {
                税率=0.45;
                速算扣除数=15160;
            }
            double 个税=-(应纳税所得额*税率-速算扣除数);
            ExcelHelpers.setCellValue(sheet,i,7,个税);
            //System.out.println(基本工资+","+个税);
            double 实发工资 = 基本工资+绩效工资+奖金+考勤罚款+社保+个税;
            String text = 姓名+"你好,您的本月基本工资:"+df.format(基本工资)+",绩效工资:"+
                    df.format(绩效工资)+",奖金:"+df.format(奖金)+",考勤罚款:"+
                    df.format(考勤罚款)+",社保:"+df.format(社保)+",个税:"+
                    df.format(个税)+",实发工资:"+df.format(实发工资);

            MailSender mailSender = new MailSender();
            mailSender.setHostName("smtp.126.com");
            mailSender.setUserName("yzktest@126.com");//yzktest
            mailSender.setPassword("LFNSLAXMDDRODJGK");
            mailSender.setFrom("yzktest@126.com");//发送者邮箱
            //mailSender.addTo("yangzhongke8@gmail.com");
            //mailSender.setSubject("这是明天出差人员的注意事项");
            //mailSender.setTextMessage("在附件中。");
            //mailSender.addAttachment(new File("D:\\报表.docx"));
            mailSender.addTo(邮箱);
            mailSender.setSubject(姓名+"的本月工资条");
            mailSender.setTextMessage(text);
            mailSender.send();
            //System.out.println(text);
        }
        ExcelHelpers.saveToFile(wb,"d:/2020年4月份工资表-算完了个税.xlsx");
        ExcelHelpers.close(wb);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值