使用java的姿势完善【年、月、周】个人工作量总结
生活随笔
收集整理的這篇文章主要介紹了
使用java的姿势完善【年、月、周】个人工作量总结
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
整理個(gè)人工作量
- 前提
- 過程
- 1、從周報(bào)或者月報(bào)中復(fù)制個(gè)人記錄
- 2、整理成txt文件,每行開頭和結(jié)尾皆不需要特殊處理,只保留工作內(nèi)容即可
- 3、思考excel的版面及一些固定信息
- 4、java代碼開發(fā)
- 5、代碼獻(xiàn)上
前提
年度到了,需要上交自己的個(gè)人工作量excel文件了,因?yàn)橐荒陙砀傻氖虑樘嗵?xì)了,所以準(zhǔn)備使用java來將這一年的工作記錄總結(jié)到excel中
過程
1、從周報(bào)或者月報(bào)中復(fù)制個(gè)人記錄
2、整理成txt文件,每行開頭和結(jié)尾皆不需要特殊處理,只保留工作內(nèi)容即可
如:
今天摸魚
今日劃水
今日專心工作
3、思考excel的版面及一些固定信息
如下:
1)紅色是固定格式不需要填寫,excel下拉即可全部復(fù)制
2)綠色是需要填寫的工作內(nèi)容,【上面的今日摸魚等信息】
4、java代碼開發(fā)
整體思路如下:
1.將這一年的工作日整理出列表【節(jié)假日不寫工作內(nèi)容】
2. 讀取提交準(zhǔn)備好的工作內(nèi)容txt文件
3. 從指定的excel文件中寫入循環(huán)第二步的內(nèi)容【節(jié)假日跳過】
5、代碼獻(xiàn)上
只要文件都準(zhǔn)備好,可直接運(yùn)行~😊
package person.keino.OperatExcelPrac;import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*;/*** @Classname OperaExcel* @Description TODO* @Date 2021-06-07 11:30* @Created by keino*/ public class OperaExcel {//提前自定義的一些日期,比如每年五一、國(guó)慶等不屬于周六周日但是依舊是休息日的多個(gè)日期final static String[] commonHolidays = {"20211001","20211002","20211003","20211004","20211005","20211006","20211007"};//將定義好的日期 放入 holidaySetfinal static HashSet<String> holidaySet = new HashSet<String>(Arrays.asList(commonHolidays));//工作日集合final static HashSet<String> workdaySet = new HashSet<>();final static SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");/*** 統(tǒng)計(jì)從【date】開始,之后【length】天中的工作日* @param date* @param length*/public static void getWorkDays(String date,int length){Calendar calendar = Calendar.getInstance();try {Date beginDay = sdf.parse(date);calendar.setTime(beginDay);for(int i=0;i<length;i++){calendar.add(Calendar.DAY_OF_WEEK,1); // 每次累加一天int day = calendar.get(Calendar.DAY_OF_WEEK); // 獲取當(dāng)天是周幾String tmp_day = sdf.format(calendar.getTime());//如果當(dāng)天是1和7或者屬于自定義日期 則屬于休息日 剩余的則是工作日if((day!=1 && day!=7) && (!holidaySet.contains(tmp_day))){workdaySet.add(tmp_day);//將工作日添加到workdaySet}}} catch (ParseException e) {e.printStackTrace();}}public static ArrayList<String> getLines(String path) throws IOException {ArrayList<String> lines = new ArrayList<>();BufferedReader br = new BufferedReader(new FileReader(path));String str = "";while((str = br.readLine())!=null) {if(str.length()>2){lines.add("1."+str);}}return lines;}/**** @param writeBegin 開始寫記錄的初始位置* @param writeEnd 結(jié)束寫記錄的位置* @param worksNotes 工作記錄,可以以txt文件為載體,總是需要提前寫好每一條工作記錄【可以從日?qǐng)?bào)或者周報(bào)獲取】* @param path 【年度工作總結(jié)】excel文件的本地地址* @param writePos01 需要插入的excel的列1* @param writePos02 需要插入的excel的列2* @throws IOException*/public void writeReports(int writeBegin,int writeEnd,ArrayList<String> worksNotes,String path,int writePos01,int writePos02) throws IOException {XSSFWorkbook workbook = new XSSFWorkbook(new FileInputStream(path));XSSFSheet sheet = workbook.getSheet("日工作量清單-數(shù)據(jù)平臺(tái)部");int recordNum = 0; // 日志記錄中對(duì)應(yīng)的行數(shù)for(int i=writeBegin-1;i<=writeEnd-1;i++){XSSFRow row = sheet.getRow(i);//獲取該行日期String date = sdf.format(row.getCell(0).getDateCellValue());if(workdaySet.contains(date)){//創(chuàng)建填充shell位置,并且填充數(shù)據(jù)XSSFCell cell = row.createCell(writePos01);cell.setCellValue(worksNotes.get(recordNum)); //從日志記錄 第0行開始,遞增XSSFCell cell2 = row.createCell(writePos02);cell2.setCellValue(worksNotes.get(recordNum++)); //從日志記錄 第0行開始 遞增}else{continue;}}FileOutputStream fos = new FileOutputStream("/Users/keino/Desktop/workNote.xlsx");workbook.write(fos);workbook.close();fos.close();workbook.close();}public static void main(String[] args) throws IOException {getWorkDays("20210531", 360);OperaExcel excel = new OperaExcel();excel.writeReports(180,363,getLines("/Users/keino/Desktop/工作記錄.txt"),"/Users/keino/Desktop/年度工作量總結(jié).xlsx",5,6);} }總結(jié)
以上是生活随笔為你收集整理的使用java的姿势完善【年、月、周】个人工作量总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ‘(‘:illegal token on
- 下一篇: jQuery笔记——选择器