extremprocess1

public class ExtremProcess
{
	/**如果每個表單需要標題行,則爲1,否則爲0*/
	private final int headline = 1;
	private Logger log = Logger.getLogger(ExtremProcess.class);
	
	/**
	 * 
	 * @param dir 文件所在目錄
	 * @param override 是否覆蓋源文件,true覆蓋,false不覆蓋
	 */
	public boolean exeDir(File dir,boolean override)
	{
		try
		{
			File[] fs = dir.listFiles(new FilenameFilter() {
				public boolean accept(File dir, String name)
				{
					return name.toLowerCase().endsWith("xls") && name.indexOf("finished") == -1;
				}
			});
			for(File f:fs)
			{
				String src = f.getAbsolutePath();
				exeFile(src, override ? src : src.replace(".", "_finished."));
			}
		}
		catch (Exception e)
		{
			log.error("目錄輸入有誤,請檢查重試!");
			return false;
		}
		return true;
	}
	
	/**
	 * 
	 * @param srcFile 源文件
	 * @param desFile 處理後生成的文件,如果與源文件名同則覆蓋源文件,原來資料仍然保留
	 */
	public boolean exeFile(String srcFile,String desFile)
	{
		try
		{
			SimpleDateFormat formatter = Const.srcFormat;
			log.info(srcFile+" is processing...");
			Workbook book = Workbook.getWorkbook(new File(srcFile)); 
			
			Sheet sheet = book.getSheet(Const.sheet_index-1);
			Cell[] cells = sheet.getColumn(Const.data_index); 
			
			String dateFormat = "%tF %<tT";
			LinkedHashMap<Integer, ArrayList<Date>> map = new LinkedHashMap<Integer, ArrayList<Date>>(31,1f);
			String result = null;
			for(Cell cell:cells)
			{
				result = cell.getContents(); 
				if(result.trim().length() != 0)//如果非空就轉化爲日期存起來
				{
					Date d = formatter.parse(result);
					if(map.get(d.getDate()) == null)
					{
						map.put(d.getDate(), new ArrayList<Date>());
					}
					map.get(d.getDate()).add(d);
				}
					
			}
			//對抽取的數據進行處理
			SimpleProcess util = new SimpleProcess();
			util.deal(map);
			LinkedHashMap<Integer,ArrayList<Date>> exception = util.getException();
			LinkedHashMap<Integer,ArrayList<Date>> extra_weekend = util.getExtra_weekend();
			LinkedHashSet<Date> extra_weekday = util.getExtra_weekday();
			
			//新建一個可寫工作薄
			WritableWorkbook wbook = Workbook.createWorkbook(new FileOutputStream(desFile,false),book);
			String[] title = {"週末加班","平時加班","異常打卡"};
			WritableSheet[] ws = new WritableSheet[title.length];
			
			//做點清理,如果爲空白表單或者與目標表單重名,則予以刪除
			for(int i=book.getNumberOfSheets()-1;i >= 0; i--)
			{
				if(book.getSheet(i).getRows() == 0 || book.getSheet(i).getColumns() == 0)
				{
					wbook.removeSheet(i);
					continue;
				}
				for(String t : title)
				{
					if(book.getSheet(i).getName().equals(t))
					{
						wbook.removeSheet(i);
					}
				}
			}

 

發佈了1 篇原創文章 · 獲贊 2 · 訪問量 850
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章