今天利用了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(); } }
相关推荐
运行此命令会启动程序,根据内部逻辑生成Excel考勤表。 描述中提到的“自动生成Excel考勤”,意味着程序可能有以下功能: 1. 创建新的Excel文件或打开已有的模板。 2. 根据预设的日期范围填充考勤数据,如上下班...
1. 使用Apache POI生成Excel文件,根据需求填充数据。 2. 配置Quartz定时任务,设定生成Excel和发送邮件的时机。 3. 创建JavaMail Session,设置邮件服务器参数,如SMTP服务器地址、端口、用户名和密码。 4. 创建...
在Java编程环境中,读取Excel文件是一项常见的任务,特别是在数据分析和报表生成的场景下。本教程将介绍如何使用Apache POI库来处理Excel文件,并结合JFreeChart库绘制统计图,以便对成绩分布进行可视化分析。 ...
- **人力资源管理**:处理员工信息表、考勤记录等。 - **电商平台**:商品数据的批量上传或下载。 - **物流管理**:货物清单的生成与打印。 ### 如何下载及安装POI插件 #### 四、下载途径 尽管提供的链接...
这个工具的核心功能是接收Excel报表中的考勤数据,然后利用SQLite数据库进行存储和处理,以得出精确的工作小时统计。 首先,让我们详细了解一下Java Swing。Java Swing是Java AWT(Abstract Window Toolkit)的扩展...
此外,系统还需要具备一些辅助功能,比如报表生成,可能需要利用到如Apache POI库来生成Excel报表,展示员工的月度、季度或年度考勤总结。另外,提醒功能也是必不可少的,例如设置自动提醒员工未打卡或者审批请假...
8. **报表和数据分析**:考勤系统的功能可能包括生成报表,展示学生出勤统计,这需要用到数据分析和报表库,如Apache POI用于读写Excel文件,或者JasperReports、iText等用于生成PDF报告。 9. **安全性**:考虑到...
7. **数据统计与报表**:JAVA可以结合Apache POI库读写Excel,用于生成考勤和任务的统计报表,方便管理层进行数据分析。 8. **API集成**:如果公司有其他系统,如HRM(人力资源管理系统),可能会用到RESTful API...
- 报告生成可能使用了Java的打印服务或者第三方库,如Apache POI来处理Excel,iText或PDFBox用于PDF报告。 3. **运行流程**: - 用户安装并配置好JDK 6后,找到项目解压的目录,进入"checking-in"子目录。 - ...
在教学辅助系统中,POI可能被用来处理成绩表、考勤记录等Excel数据,方便数据导入导出。 总的来说,"teaching:教学辅助系统"是一个综合运用了多种Java技术和数据库的项目,旨在提供一个高效、易用的教学管理解决...
Java Swing或JavaFX可用于构建用户界面,处理销售流水,而数据分析则可能涉及Apache POI读写Excel文件。 5. **会员管理**:管理顾客信息,提供积分、优惠等会员服务。数据库中的会员表与Java对象模型对应,使用...
Java可以调用第三方库,如Apache POI,来读写Excel文件,方便生成和导出报表。 6. 用户界面:使用Java Swing或JavaFX库创建图形用户界面,使用户能够方便地查看和操作数据。Access的用户界面设计功能也可以辅助构建...