`
357029540
  • 浏览: 737194 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

利用poi生成excel考勤表

    博客分类:
  • JAVA
 
阅读更多

          今天利用了Apache poi 编写了一个生成excel的考勤表,Apache poi链接地址为http://poi.apache.org/,代码如下:

package com.pom;

import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Sheet;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Random;

/**
 * Created by admin on 2016/6/2.
 */
public class PomExcel {

    public void pomExcelOperation(){
        try {
            //获取当前日期
            Calendar calendar = Calendar.getInstance();
            //当前月份
            int month = calendar.get(Calendar.MONTH) + 1;
            //设置现在日期为本月1号
            calendar.set(Calendar.DATE,1);
            //设置月份为下一个月
            calendar.add(Calendar.MONTH,1);
            //减一天为上月最后一天
            calendar.add(Calendar.DATE,-1);
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            //获取本月有多少天
            int day = Integer.parseInt(df.format(calendar.getTime()).substring(8));
            String filePath = "e:/admin-"+calendar.get(Calendar.YEAR)+"."+month+"考勤.xls";
            HSSFWorkbook workbook = null;
            File file = new File(filePath);
            if(!file.exists()) {
                file = new File(filePath);
                file.createNewFile();
                workbook = new HSSFWorkbook();
                //sheet的名字
                String sheetName = "admin";
                HSSFSheet hssfSheet = workbook.createSheet(sheetName);
                //创建第一行
                HSSFRow hssfRow = hssfSheet.createRow(0);
                String [] firstRow = {"工号","姓名","出勤日期","上班时间","下班时间","说明"};
                HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
                HSSFFont hssfFont = workbook.createFont();
                //字体大小
                hssfFont.setFontHeightInPoints((short)11);
                //加粗
                hssfFont.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
                hssfCellStyle.setFont(hssfFont);
                //左右居中
                hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                //上下居中
                hssfCellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
                //hssfRow.setRowStyle(hssfCellStyle);
                //创建单元格
                HSSFCell hssfCell = null;
                for(int i = 0;i < firstRow.length;i++){
                    hssfCell = hssfRow.createCell(i);
                    hssfCell.setCellValue(firstRow[i]);
                    hssfCell.setCellStyle(hssfCellStyle);
                    //设置列宽,256表示每个字符大小
                    if(i == 0 || i == 2){
                        hssfSheet.setColumnWidth(i,15*256);
                    }else if(i == 1){
                        hssfSheet.setColumnWidth(i,10*256);
                    }
                }
                //从第二行开始创建
                for(int i = 1;i < day+1;i++){
                    String nowDate = calendar.get(Calendar.YEAR)+"-"+month+"-"+i;
                    hssfRow = hssfSheet.createRow(i);
                    HSSFCellStyle cellStyle = workbook.createCellStyle();
                    //左右居中
                    cellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
                    //上下居中
                    cellStyle.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER);
                    //创建单元格
                    for(int j = 0;j < firstRow.length;j++){
                        hssfCell = hssfRow.createCell(j);
                        hssfCell.setCellStyle(cellStyle);
                        if(j == 0){
                            hssfCell.setCellValue("0000060316");
                        }else if(j == 1){
                            hssfCell.setCellValue(sheetName);
                        }else if(j == 2){
                            HSSFDataFormat hssfDataFormat = workbook.createDataFormat();
                            //HSSFCellStyle cellStyle = workbook.createCellStyle();
                            //格式化时间
                            //cellStyle.setDataFormat(HSSFDataFormat.getBuiltinFormat("m/d/yy"));
                            //hssfCell.setCellStyle(cellStyle);
                            nowDate = calendar.get(Calendar.YEAR)+"-"+month+"-"+i;
                            hssfCell.setCellValue(df.format(df.parse(nowDate)));
                        }else if(j == 3 || j == 4){
                            //设置日期
                            calendar.setTime(df.parse(nowDate));
                            //获取随机时间
                            Random random = new Random();
                            //判断周6,周日
                            if(calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY &&
                                    calendar.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY){
                                if(j == 3){
                                    String moTime = "8:";
                                    int randomNum = random.nextInt(29);
                                    if(randomNum < 10){
                                        if(randomNum == 0){
                                           randomNum = 7;
                                        }
                                        moTime = moTime + "0" + randomNum;
                                    }else {
                                        moTime = moTime + randomNum;
                                    }
                                    hssfCell.setCellValue(moTime);
                                }else {
                                    String afTime = "18:";
                                    int num = random.nextInt(40);
                                    if(num < 10){
                                        if(num == 0){
                                            num = 7;
                                        }
                                        afTime = afTime + "0" + num;
                                    }else {
                                        afTime = afTime + num;
                                    }
                                    hssfCell.setCellValue(afTime);
                                }
                            }
                        }else if(j == 5){
                            //设置日期
                            calendar.setTime(df.parse(nowDate));
                            //判断周6,周日
                            if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY  ||
                                    calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
                                hssfCell.setCellValue("周末");
                            }
                        }
                    }
                }
                FileOutputStream fileOutputStream = new FileOutputStream(filePath);
                workbook.write(fileOutputStream);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }

    public static void main(String [] args){
        PomExcel pomExcel = new PomExcel();
        pomExcel.pomExcelOperation();
    }
}

 

分享到:
评论

相关推荐

    运行jar文件写Excel考勤

    运行此命令会启动程序,根据内部逻辑生成Excel考勤表。 描述中提到的“自动生成Excel考勤”,意味着程序可能有以下功能: 1. 创建新的Excel文件或打开已有的模板。 2. 根据预设的日期范围填充考勤数据,如上下班...

    java定时生成execl并发送邮件

    1. 使用Apache POI生成Excel文件,根据需求填充数据。 2. 配置Quartz定时任务,设定生成Excel和发送邮件的时机。 3. 创建JavaMail Session,设置邮件服务器参数,如SMTP服务器地址、端口、用户名和密码。 4. 创建...

    java读取excel文件,并绘制统计图分析excel内的成绩分布情况

    在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据分析和报表生成的场景下。本教程将介绍如何使用Apache POI库来处理Excel文件,并结合JFreeChart库绘制统计图,以便对成绩分布进行可视化分析。 ...

    POI插件下载

    - **人力资源管理**:处理员工信息表、考勤记录等。 - **电商平台**:商品数据的批量上传或下载。 - **物流管理**:货物清单的生成与打印。 ### 如何下载及安装POI插件 #### 四、下载途径 尽管提供的链接...

    java swing实现考勤工时计算工具

    这个工具的核心功能是接收Excel报表中的考勤数据,然后利用SQLite数据库进行存储和处理,以得出精确的工作小时统计。 首先,让我们详细了解一下Java Swing。Java Swing是Java AWT(Abstract Window Toolkit)的扩展...

    【SSM项目】员工考勤管理系统.zip

    此外,系统还需要具备一些辅助功能,比如报表生成,可能需要利用到如Apache POI库来生成Excel报表,展示员工的月度、季度或年度考勤总结。另外,提醒功能也是必不可少的,例如设置自动提醒员工未打卡或者审批请假...

    Java学院考勤系统

    8. **报表和数据分析**:考勤系统的功能可能包括生成报表,展示学生出勤统计,这需要用到数据分析和报表库,如Apache POI用于读写Excel文件,或者JasperReports、iText等用于生成PDF报告。 9. **安全性**:考虑到...

    员工考勤及员工任务分配

    7. **数据统计与报表**:JAVA可以结合Apache POI库读写Excel,用于生成考勤和任务的统计报表,方便管理层进行数据分析。 8. **API集成**:如果公司有其他系统,如HRM(人力资源管理系统),可能会用到RESTful API...

    checking-in-analysis_Java.zip_run

    - 报告生成可能使用了Java的打印服务或者第三方库,如Apache POI来处理Excel,iText或PDFBox用于PDF报告。 3. **运行流程**: - 用户安装并配置好JDK 6后,找到项目解压的目录,进入"checking-in"子目录。 - ...

    teaching:教学辅助系统

    在教学辅助系统中,POI可能被用来处理成绩表、考勤记录等Excel数据,方便数据导入导出。 总的来说,"teaching:教学辅助系统"是一个综合运用了多种Java技术和数据库的项目,旨在提供一个高效、易用的教学管理解决...

    超市管理系统

    Java Swing或JavaFX可用于构建用户界面,处理销售流水,而数据分析则可能涉及Apache POI读写Excel文件。 5. **会员管理**:管理顾客信息,提供积分、优惠等会员服务。数据库中的会员表与Java对象模型对应,使用...

    java-access企业人事管理课设

    Java可以调用第三方库,如Apache POI,来读写Excel文件,方便生成和导出报表。 6. 用户界面:使用Java Swing或JavaFX库创建图形用户界面,使用户能够方便地查看和操作数据。Access的用户界面设计功能也可以辅助构建...

Global site tag (gtag.js) - Google Analytics