问题描述
usingSystem;usingSystem.Collections.Generic;usingSystem.Text;usingSystem.IO;usingSystem.Data;usingSystem.Data.OleDb;usingSystem.Collections;usingSystem.Diagnostics;namespaceStaffManagement{classImpAndExpXls{constStringDATABASE_MDB="Provider=Microsoft.Jet.OleDb.4.0;DataSource=StaffManagement.mdb;JetOLEDB:DatabasePassword=123456";constStringDATABASE_EXCEL="Provider=Microsoft.Jet.OLEDB.4.0;DataSource={0};ExtendedProperties="Excel8.0"";constStringFILE_EXCEL_MODEL="{1}ExpModel{0}.xls";constStringSQL_GET_COUNT="SelectCount(0)FromvwEmpWhereWorkIDLike'{0}%'And{1}And{2};";constStringSQL_GET_DATA0="SelectTop{0}*"+"FromvwEmpWhereWorkIDLike'{1}%'And{2}And{3}OrderByIDDesc;";constStringSQL_GET_DATA1="SelectA.*From"+"(Selecttop{0}*FromvwEmpWhereWorkIDLike'{2}%'And{3}And{4}OrderByIDDESC)AsA"+"LeftJoin"+"(Selecttop{1}*FromvwEmpWhereWorkIDLike'{2}%'And{3}And{4}OrderByIDDESC)AsBOnA.WORKID=B.WORKIDWhereB.WorkIDIsNull;";constStringSQL_EXPORT_EXCEL="InsertInto[EmpImport$](工号,姓名,部门,性别,职务,身份证,户籍地址,入职时间,离职时间,指纹1,指纹2,身份证照片)"+"Values('{0}','{1}','{2}','{3}','{4}','{5}','{6}','{7}','{8}','{9}','{10}','{11}');";constStringSQL_INSERT_WORKERINFO="INSERTINTO[WorkerInfo]([WorkID],[Name],[Dep],[Post],[CardID],[InDate])"+"VALUES('{0}','{1}','{2}','{3}','{4}',{5});";constStringSQL_INSERT_INSTAFFINFO="INSERTINTO[InStaffInfo]([WorkID],[Name],[Dep],[Post],[Sex],[CardID],[Address],[InDate],[PrintFinger1],[PrintFinger2],[FilePath])"+"VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},'{8}','{9}','{10}');";constStringSQL_INSERT_OUTSTAFFINFO="INSERTINTO[OutStaffInfo]([WorkID],[Name],[Dep],[Post],[Sex],[CardID],[Address],[InDate],[OutDate],[PrintFinger1],[PrintFinger2],[FilePath])"+"VALUES('{0}','{1}','{2}','{3}','{4}','{5}','{6}',{7},{8},'{9}','{10}','{11}');";constStringSQL_UPDATE_WORKERINFO="Update[WorkerInfo]Set[Name]='{1}',[Dep]='{2}',[Post]='{3}',[CardID]='{4}',[InDate]={5}Where[WorkID]='{0}';";constStringSQL_UPDATE_INSTAFFINFO="Update[InStaffInfo]Set[Name]='{1}',[Dep]='{2}',[Post]='{3}',[Sex]='{4}',[CardID]='{5}',[Address]='{6}',[InDate]={7},[PrintFinger1]='{8}',[PrintFinger2]='{9}',FilePath='{10}'Where[WorkID]='{0}';";constStringSQL_UPDATE_OUTSTAFFINFO="Update[OutStaffInfo]Set[Name]='{1}',[Dep]='{2}',[Post]='{3}',[Sex]='{4}',[CardID]='{5}',[Address]='{6}',[InDate]={7},[OutDate]={8},[PrintFinger1]='{9}',[PrintFinger2]='{10}',FilePath='{11}'Where[WorkID]='{0}';";constStringSQL_DELETE_INSTAFFINFO="DeleteFrom[InStaffInfo]Where[WorkID]='{0}';";constStringSQL_DELETE_OUTSTAFFINFO="DeleteFrom[OutStaffInfo]Where[WorkID]='{0}';";constStringSQL_IMPORT_EXCEL="Select*from[EmpImport$]";constStringERROR_WORKID_NOTINPUT="工号不能空!";constStringERROR_INDATE_FORMAT="入职时间格式错误应填写XXXX-XX-XX或XXXX-X-X!";constStringERROR_OUTDATE_FORMAT="离职时间格式错误应填写XXXX-XX-XX或XXXX-X-X!";constStringERROR_INDATE_OUTDATE_NOT="入职时间和离职时间不能同时填写!";constStringERROR_CARDID_LENGTH="身份证只能填写15位或18位!";constStringERROR_ADDNEW_DATA="添加新信息,工号,姓名和入职时间必填,离职时间不必填!";constStringERROR_OPENFILE_TITLE="导入批量员工";
解决方案
解决方案二:
#region"ExpModel导出模板"publicstaticboolExpModel(){String_xlsfile=String.Format(FILE_EXCEL_MODEL,"",Directory.GetCurrentDirectory()+"\");bool_isExp=false;SaveFileDialog_savedialog;try{if(!File.Exists(_xlsfile)){thrownewException("ExpModel方法:ExpModel模板文件不存在!");}_savedialog=newSaveFileDialog();_savedialog.Title="导出【导入Excel模板】";_savedialog.DefaultExt="*.xls";_savedialog.Filter="xlsfiles(*.xls)|*.xls";_savedialog.RestoreDirectory=true;_savedialog.FileName=String.Format(FILE_EXCEL_MODEL,DateTime.Now.ToString("yyyyMMddHHmmss"),Directory.GetCurrentDirectory()+"\");;if(DialogResult.OK==_savedialog.ShowDialog()){//Stream_stream=_savedialog.OpenFile();//if(_stream!=null)//{//_stream.Close();//}File.Copy(_xlsfile,_savedialog.FileName);_isExp=true;}_savedialog.Dispose();}catch(IOExceptione0){_isExp=false;thrownewException(e0.Message);}catch(Exceptione1){_isExp=false;thrownewException(e1.Message);}finally{}return_isExp;}#endregion
解决方案三:
#region"取出数据"publicstaticDataTableGetData(StringpWorkID,UInt16pIsIn,UInt16pIsFinger,UInt32pPageNumber,UInt32pPageSize,outUInt32pPageCount,outUInt32pCount){String_isIn=pIsIn==1?"OutDateIsNull":(pIsIn==0?"OutDateIsNotNull":"0=0");String_isFinger=pIsFinger==1?"PrintFinger1IsNotNull":(pIsFinger==0?"PrintFinger1IsNull":"0=0");String_workid=null==pWorkID?"":pWorkID;OleDbConnection_connect=newOleDbConnection(DATABASE_MDB);OleDbCommand_cmdcount=newOleDbCommand(String.Format(SQL_GET_COUNT,_workid,_isIn,_isFinger),_connect);OleDbCommand_cmd=newOleDbCommand();OleDbDataAdapter_adapter=newOleDbDataAdapter();_cmd.Connection=_connect;_adapter.SelectCommand=_cmd;DataTable_dt=null;pCount=0;pPageCount=0;try{_connect.Open();//_cmdcount.CommandText="SELECTCount(0)asiCountFROMvwEmpWhereWorkIDLike'%';";pCount=(UInt32)(int)_cmdcount.ExecuteScalar();pPageCount=(UInt32)Math.Ceiling(((double)pCount)/pPageSize);if(1==pPageNumber){_cmd.CommandText=String.Format(SQL_GET_DATA0,pPageSize,_workid,_isIn,_isFinger);}elseif(pPageNumber>1){_cmd.CommandText=String.Format(SQL_GET_DATA1,pPageNumber*pPageSize,(pPageNumber-1)*pPageSize,_workid,_isIn,_isFinger);}else{_cmd.CommandText=String.Format(SQL_GET_DATA0,100000,_workid,_isIn,_isFinger);}_dt=newDataTable("Emp");_adapter.Fill(_dt);}catch(OleDbExceptione0){if(null!=_dt){_dt.Dispose();_dt=null;}thrownewException("GetData方法:"+e0.Message);}catch(Exceptione1){if(null!=_dt){_dt.Dispose();_dt=null;}thrownewException("GetData方法:"+e1.Message);}finally{if(ConnectionState.Closed!=_connect.State){_connect.Close();}_connect.Dispose();_adapter.Dispose();_cmdcount.Dispose();_cmd.Dispose();}return_dt;}#endregion
解决方案四:
#region"导出数据"publicstaticboolExpData(StringpWorkID,UInt16pIsIn,UInt16pIsFinger){String_xlsfile=String.Format(FILE_EXCEL_MODEL,"",Directory.GetCurrentDirectory()+"\");bool_isExp=false;SaveFileDialog_savedialog;OleDbConnection_connect=newOleDbConnection();OleDbCommand_cmd=newOleDbCommand();OleDbTransaction_trans;_cmd.Connection=_connect;UInt32_count=0;UInt32_pagecount=0;DateTime_startdate=DateTime.MinValue,_enddate=DateTime.MinValue;bool_isstart=false,_isend=false;try{DataTable_dt=GetData(pWorkID,pIsIn,pIsFinger,1,100000,out_pagecount,out_count);if(!File.Exists(_xlsfile)){thrownewException("ExpData方法:ExpModel模板文件不存在!");}_savedialog=newSaveFileDialog();_savedialog.Title="导出员工数据到Excel";_savedialog.DefaultExt="*.xls";_savedialog.Filter="xlsfiles(*.xls)|*.xls";_savedialog.RestoreDirectory=true;_savedialog.FileName=String.Format("{1}ExpData{0}.xls",DateTime.Now.ToString("yyyyMMddHHmmss"),Directory.GetCurrentDirectory()+"\");if(DialogResult.OK!=_savedialog.ShowDialog()){_savedialog.Dispose();return_isExp;}String_filename=_savedialog.FileName;_savedialog.Dispose();File.Copy(_xlsfile,_filename);if(null==_dt){thrownewException("ExpData方法:未取得数据.");return_isExp;}_connect.ConnectionString=String.Format(DATABASE_EXCEL,_filename);_connect.Open();_trans=_connect.BeginTransaction();_cmd.Transaction=_trans;try{foreach(DataRow_rowin_dt.Rows){//_cmd.CommandText=String.Format(SQL_EXPORT_EXCEL,_row["WorkID"],_row["Name"],_row["Dep"],//_row["Sex"]==null?"-":_row["Sex"].ToString(),_row["Post"],_row["CardID"],//_row["InDate"]==null?"-":((DateTime)_row["InDate"]).ToString("yyyy-MM-dd"),//_row["OutDate"]==null?"-":((DateTime)_row["OutDate"]).ToString("yyyy-MM-dd"),//_row["PrintFinger1"]==null?"-":_row["PrintFinger1"].ToString(),//_row["PrintFinger2"]==null?"-":_row["PrintFinger2"].ToString());_enddate=_startdate=DateTime.MinValue;_isstart=DateTime.TryParse(_row["InDate"].ToString(),out_startdate);_isend=DateTime.TryParse(_row["OutDate"].ToString(),out_enddate);_cmd.CommandText=String.Format(SQL_EXPORT_EXCEL,_row["WorkID"],_row["Name"],_row["Dep"],_row["Sex"],_row["Post"],_row["CardID"],_row["Address"],_isstart?_startdate.ToString("yyyy-MM-dd"):"",_isend?_enddate.ToString("yyyy-MM-dd"):"",_row["PrintFinger1"],_row["PrintFinger2"],_row["FilePath"]);_cmd.ExecuteNonQuery();}_trans.Commit();}catch(OleDbExceptione3){_trans.Rollback();thrownewException("ExpData方法:"+e3.Message);}}catch(OleDbExceptione2){_isExp=false;thrownewException("ExpData方法:"+e2.Message);}catch(IOExceptione0){_isExp=false;thrownewException("ExpData方法:"+e0.Message);}catch(Exceptione1){_isExp=false;thrownewException("ExpData方法:"+e1.Message);}finally{if(ConnectionState.Closed!=_connect.State){_connect.Close();}_connect.Dispose();}return_isExp;}#endregion
解决方案五:
代码是写出来的,不是改出来的。不要以为代码是上帝发明的,程序员就是把它们粘贴来粘贴去。也不要以为,没有代码,就什么也做不了了。自己写一个也不费事,何况这代码也没有什么修改的价值。
解决方案六:
会改就改,不会改就闪,烦不烦人啊,唧唧歪歪的。。。
解决方案七:
啥时候有写代码的水平
解决方案八:
有这水平,谁高兴去改代码哦。。
解决方案九:
会的人多着呢,为什么老板偏偏找你这样不会的?因为老板开不起让会的人满意的价码。所以不会的人将就顶替会的人,他们出工出不了力,他们天天在网上搜罗代码垃圾,然后用垃圾拼凑翻新出软件。这些软件再卖给买不起软件的人。
解决方案十:
哈哈,胡乱说说而已。lz等高手吧。
解决方案十一:
你会那你改啊,有本事你就改出来啊,在这里光说,谁都会说。。谁都是从看别人代码过来的,该代码也是学习的基础。每个公司都去用经验丰富的人,让我们新人何以立足。。
解决方案十二:
淡定......