//调度线程导出数据到Excel private void DataToExcel(object objFn) { if (objFn == null) { return; } try { setCtrlEnableValue(false);//禁止控件 //启动Timer更新进度条的状态 ProgressManager pm = new ProgressManager(this.pbLoadData); pm.Start();//开始进度条 string fileName = objFn.ToString(); Dictionary <string, string> dicPropTitle = new Dictionary <string, string>(); DataTable dt = null; rwLockLpt.AcquireReaderLock(CHECKINTERVAL);//请求读锁 try { dicPropTitle.Add("SerNumber", "计:" + this.listPrdctTest.Count); dicPropTitle.Add("PrdctNumber", "品号"); //品号 dicPropTitle.Add("TreatType", "处理类型"); //处理类型 dicPropTitle.Add("WeDuration", "白锈时长"); //白锈时长 dicPropTitle.Add("ReDuration", "红锈时长"); dicPropTitle.Add("StartTime", "开始时间"); dicPropTitle.Add("WeLossTime", "白锈LOSS"); dicPropTitle.Add("ReLossTime", "红锈LOSS"); dicPropTitle.Add("WeEndTime", "白锈结束时间"); dicPropTitle.Add("ReEndTime", "红锈结束时间"); dicPropTitle.Add("WeTestResult", "白锈结果"); dicPropTitle.Add("ReTestResult", "红锈结果"); dicPropTitle.Add("Remark", "备注"); dt = Dongle.Utilities.CommonUtils.ListToDataTable(this.listPrdctTest, "盐雾试验历史数据", dicPropTitle); } finally { rwLockLpt.ReleaseReaderLock();//释放读锁 } if (dt == null || dt.Rows.Count == 0) { System.Windows.MessageBox.Show("转化后的数据为空!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Warning); return; } DataSet ds = new DataSet("盐雾试验历史数据"); ds.Tables.Add(dt); string mess = string.Empty; //bool result = DataImportExport.ExportExcel.DataToExcel(fileName, ds, ref mess); bool result = Dongle.Utilities.DataImportExport.DataToExcel(fileName, ds, ref mess); pm.Stop(); //停止进度条 setCtrlEnableValue(true); //恢复控件 this.Dispatcher.BeginInvoke((Action)(() => { if (result) { System.Windows.MessageBox.Show("导出已完成!", "系统提示", MessageBoxButton.OK, MessageBoxImage.Information); } else if (!string.IsNullOrEmpty(mess)) { System.Windows.MessageBox.Show(mess, "系统提示", MessageBoxButton.OK, MessageBoxImage.Warning); } })); } catch (Exception ex) { Logger.Error(MethodBase.GetCurrentMethod(), "导出数据过程出现错误:" + ex.Message); } }