上次完成到将个人所成税算了出来
现在要发送工资条到邮箱
定位到员工信息表,读取他对应的邮箱,发送邮箱
准备工作完成
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); }}