using DevExpress.Utils.Drawing.Helpers; using ICSharpCode.Core; using Mesnac.Action.Base; using Mesnac.Action.ChemicalWeighing.Entity.Report; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace Mesnac.Action.ChemicalWeighing.Report.GelDoser { /// /// 糊化机报表导出事件 /// public class ExportAction : ChemicalWeighingAction, Base.IAction { private Control _clientGridControl = null; //报表明细DGV private DbMCControl _dgvGelDoser = null; //报表数据DGV public void Run(RuntimeParameter runtime) { base.RunIni(runtime); //必须要调用的 ICSharpCode.Core.LoggingService.Debug("糊化机报表-导出..."); this._dgvGelDoser = this.GetDbMCControlByKey(Mesnac.Basic.DataSourceFactory.MCDbType.Local, "Report_GelDoser").FirstOrDefault(); DataGridView _GelDoserGridView = this._dgvGelDoser.BaseControl as DataGridView; if (_GelDoserGridView != null) { GelDoserDos_Water gelDoserDos = new GelDoserDos_Water(); gelDoserDos.eqNo = ParseToInt(_GelDoserGridView.SelectedRows[0].Cells["eqNo"].Value.ToString()); gelDoserDos.dos = ParseToInt(_GelDoserGridView.SelectedRows[0].Cells["dos"].Value.ToString()); gelDoserDos.batch = ParseToInt(_GelDoserGridView.SelectedRows[0].Cells["batch"].Value.ToString()); gelDoserDos.matCode = ParseToInt(_GelDoserGridView.SelectedRows[0].Cells["matCode"].Value.ToString()); gelDoserDos.setValue = Convert.ToDouble(_GelDoserGridView.SelectedRows[0].Cells["setValue"].Value); gelDoserDos.setToler = Convert.ToDouble(_GelDoserGridView.SelectedRows[0].Cells["setToler"].Value); gelDoserDos.actValue = Convert.ToDouble(_GelDoserGridView.SelectedRows[0].Cells["actValue"].Value); gelDoserDos.actToLer = Convert.ToDouble(_GelDoserGridView.SelectedRows[0].Cells["actToLer"].Value); gelDoserDos.recordTime = _GelDoserGridView.SelectedRows[0].Cells["recordTime"].Value.ToString(); SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "xls files(*.xls)|*.xls"; sfd.FileName = String.Format("糊化机报表_{0:yyyyMMdd}", DateTime.Now); sfd.AddExtension = true; DialogResult result = sfd.ShowDialog(); if (result == DialogResult.OK) { this._clientGridControl = GetAllControls().Where(x => x.Name.Contains("MultiColHeaderDgv")).FirstOrDefault(); if (_clientGridControl == null) { ICSharpCode.Core.LoggingService.Warn("{生产报表} 缺少缺少称量名细MultiColHeaderDgv控件..."); runtime.IsReturn = false; return; } Mesnac.Controls.Default.MultiColHeaderDgv clientGrid = (this._clientGridControl as Mesnac.Controls.Default.MultiColHeaderDgv); System.Data.DataTable dt = clientGrid.DataSource as System.Data.DataTable; string fileName = sfd.FileName; if (!String.IsNullOrEmpty(fileName)) { try { //写入Excle DataTabletoExcel(fileName, dt, gelDoserDos); string msg1 = "糊化机报表导出成功"; //导出生产报表数据至Excel成功! ICSharpCode.Core.LoggingService.Info(msg1); MessageBox.Show(msg1, Mesnac.Basic.LanguageHelper.Caption, MessageBoxButtons.OK, MessageBoxIcon.Information); } catch (Exception ex) { string msg1 = $"糊化机报表导出异常:{ex.Message}"; ICSharpCode.Core.LoggingService.Error(msg1); MessageBox.Show(msg1, Mesnac.Basic.LanguageHelper.WarnCaption, MessageBoxButtons.OK, MessageBoxIcon.Warning); } } } } } /// /// 写入到Excel文件 /// /// /// /// public void DataTabletoExcel(string strFileName, System.Data.DataTable tmpDataTable, GelDoserDos_Water gelDoserDos) { } /// /// 字符串转Int /// /// /// private int ParseToInt(string str) { int returnInt = 0; if (str == null || str.Trim().Length < 1) { return returnInt; } if (int.TryParse(str, out returnInt)) { return returnInt; } else { return 0; } } } }