using System; using System.Windows.Forms; using System.Reflection; using System.Drawing; using System.Collections; using System.Data; using Infragistics.Win.UltraWinEditors; namespace Core.XgMes.Client.JGKC.SteelPlateManager { public class Comm { public Comm() { // // TODO: 在此处添加构造函数逻辑 // } public static void DoExc(string _Name ,Infragistics.Win.UltraWinGrid.UltraGrid _Grid,int _CellNO) { string strFileName = @"D:\" + _Name + System.DateTime.Today.ToString("yyMMdd")+".xls"; System.Windows.Forms.SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "Microsoft Office Excel 工作簿 (*.xls)|*.xls"; sfd.Title = "导出到Excel文件"; sfd.FileName = strFileName; if ( sfd.ShowDialog() == DialogResult.OK ) { strFileName = sfd.FileName ; Infragistics.Excel.Workbook wb = new Infragistics.Excel.Workbook(); Infragistics.Excel.Worksheet ws2 = wb.Worksheets.Add("Sheet1"); ws2.Rows[0].Cells[0].Value = _Grid.Text; ws2.MergedCellsRegions.Add(0, 0, 0, _CellNO); ws2.Rows[0].Cells[0].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Center; ws2.Rows[0].Cells[0].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center; ws2.Rows[0].Cells[0].CellFormat.WrapText = Infragistics.Excel.ExcelDefaultableBoolean.True; ws2.Rows[0].Cells[0].CellFormat.Font.Height = 300; ws2.Rows[0].Cells[0].CellFormat.Font.UnderlineStyle = Infragistics.Excel.FontUnderlineStyle.Single; ws2.Rows[0].Height = 510; int int_index = 0; for ( int i=0; i< _Grid.DisplayLayout.Bands[0].Columns.Count; i++ ) { if ( ! _Grid.DisplayLayout.Bands[0].Columns[i].Hidden ) { ws2.Rows[1 + _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY].Cells[_Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX].Value = _Grid.DisplayLayout.Bands[0].Columns[i].Header.Caption; ws2.MergedCellsRegions.Add(1 + _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY, _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX, 1 + _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginY + _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanY-1, _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.OriginX + _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX-1); int_index += _Grid.DisplayLayout.Bands[0].Columns[i].RowLayoutColumnInfo.SpanX; } } for ( int i =0; i<= _CellNO; i++) { for ( int j=1; j<=2; j++) { ws2.Rows[j].Cells[i].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Center; ws2.Rows[j].Cells[i].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center; ws2.Rows[j].Cells[i].CellFormat.WrapText = Infragistics.Excel.ExcelDefaultableBoolean.True; ws2.Rows[j].Cells[i].CellFormat.FillPatternBackgroundColor = Color.LightSteelBlue; ws2.Rows[j].Cells[i].CellFormat.FillPatternForegroundColor = Color.LightSteelBlue; ws2.Rows[j].Cells[i].CellFormat.TopBorderColor = Color.Black; ws2.Rows[j].Cells[i].CellFormat.BottomBorderColor = Color.Black; ws2.Rows[j].Cells[i].CellFormat.LeftBorderColor = Color.Black; ws2.Rows[j].Cells[i].CellFormat.RightBorderColor = Color.Black; } } for ( int i=0; i< _Grid.Rows.Count; i++ ) { for ( int j=0; j< _Grid.DisplayLayout.Bands[0].Columns.Count; j++ ) { if ( ! _Grid.Rows[i].Cells[j].Hidden && _Grid.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.LabelPosition != Infragistics.Win.UltraWinGrid.LabelPosition.LabelOnly ) { ws2.Rows[3+i].Cells[_Grid.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].Value = _Grid.Rows[i].Cells[j].Value; ws2.Rows[3+i].Cells[_Grid.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].CellFormat.VerticalAlignment = Infragistics.Excel.VerticalCellAlignment.Center; if ( _Grid.DisplayLayout.Bands[0].Columns[j].DataType == typeof(System.Decimal)) { ws2.Rows[3+i].Cells[_Grid.DisplayLayout.Bands[0].Columns[j].RowLayoutColumnInfo.OriginX].CellFormat.Alignment = Infragistics.Excel.HorizontalCellAlignment.Right; } } } } Infragistics.Excel.BIFF8Writer.WriteWorkbookToFile(wb, strFileName); } } /// /// 设置Grid求和区域 /// /// 目标Grid /// public static void SetGridSumArea(Infragistics.Win.UltraWinGrid.UltraGridBase pGrid) { try { if(pGrid.Rows.Count == 0) { foreach(Infragistics.Win.UltraWinGrid.UltraGridBand band in pGrid.DisplayLayout.Bands) { foreach(Infragistics.Win.UltraWinGrid.SummarySettings sum in band.Summaries) { sum.SummaryDisplayArea = Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.None; } } } else { foreach(Infragistics.Win.UltraWinGrid.UltraGridBand band in pGrid.DisplayLayout.Bands) { foreach(Infragistics.Win.UltraWinGrid.SummarySettings sum in band.Summaries) { if(pGrid.DisplayLayout.GroupByBox.Hidden) { sum.SummaryDisplayArea = Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.Bottom; } else { sum.SummaryDisplayArea = ((Infragistics.Win.UltraWinGrid.SummaryDisplayAreas)((Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.Bottom | Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.InGroupByRows | Infragistics.Win.UltraWinGrid.SummaryDisplayAreas.GroupByRowsFooter))); } } } } } catch(System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } /// /// 关闭窗体 /// /// 目标Form /// public static void CloseForm(System.Windows.Forms.Form objForm) { System.Windows.Forms.DialogResult result = DialogResult.No; result=MessageBox.Show("您确认要关闭当前窗口吗?","提示信息",MessageBoxButtons.YesNo,MessageBoxIcon.Question); if(result == DialogResult.Yes) objForm.Close(); } /// /// 对目标对象进行字符串的转换 /// /// /// public static string ObjToStr(object obj) { if(obj == null || obj.GetType() == typeof(System.DBNull)) { return ""; } else { return Convert.ToString(obj); } } /// /// 对目标对象进行数字的转换 /// /// /// public static int ObjToInt(object obj) { try { if(obj == null || obj.GetType() == typeof(System.DBNull) || ObjToStr(obj).Length ==0) { return 0; } else { return Convert.ToInt32(obj); } } catch(System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); return 0; } } /// /// 对目标对象进行数字(小数)的转换 /// /// /// public static System.Decimal ObjToDecimal(object obj) { try { if(obj == null || obj.GetType() == typeof(System.DBNull) || ObjToStr(obj).Length ==0) { return 0; } else { return Convert.ToDecimal(obj); } } catch(System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); return 0; } } /// /// 对目标对象进行数字(小数)的转换 /// /// /// public static System.Double ObjToDouble(object obj) { try { if(obj == null || obj.GetType() == typeof(System.DBNull) || ObjToStr(obj).Length ==0) { return 0; } else { return Convert.ToDouble(obj); } } catch(System.Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); return 0; } } /// /// 将目标GRID导出EXCEL文件 /// /// /// /// public static void ExPortExcel(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid,Infragistics.Win.UltraWinGrid.ExcelExport.UltraGridExcelExporter ExcelExporter) { string filePath; string fileName; SaveFileDialog saveDlg = new SaveFileDialog(); try { if( !System.IO.Directory.Exists(System.Windows.Forms.Application.StartupPath + @"\Report")) { System.IO.Directory.CreateDirectory(System.Windows.Forms.Application.StartupPath + @"\Report"); } filePath = System.Windows.Forms.Application.StartupPath + @"\Report"; saveDlg.InitialDirectory = filePath; saveDlg.DefaultExt = "*.xls"; saveDlg.Filter = "XLS Files|*.xls"; saveDlg.FilterIndex = 2; saveDlg.RestoreDirectory = true ; if(saveDlg.ShowDialog() == DialogResult.OK) { fileName = saveDlg.FileName; ExcelExporter.Export(ulGrid,fileName); //创建一个新的进程打开excel System.Diagnostics.ProcessStartInfo st = new System.Diagnostics.ProcessStartInfo(fileName); st.WindowStyle = System.Diagnostics.ProcessWindowStyle.Maximized; System.Diagnostics.Process.Start(st); } } catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } public static bool FillComboEditor(ref UltraComboEditor ulComboEditor, DataSet dset) { if (dset == null) return false; if (dset.Tables.Count < 1) return false; if (dset.Tables[0].Columns.Count < 2) return false; ulComboEditor.Items.Clear(); for (int i = 0; i < dset.Tables[0].Rows.Count; i++) ulComboEditor.Items.Add(dset.Tables[0].Rows[i][0].ToString(), dset.Tables[0].Rows[i][1].ToString()); return true; } /// /// GRID 列绑定DropDownList /// /// Grid /// DataSet /// 绑定表名 /// 绑定列名 /// 显示项 /// 值项 /// public static void SetGridDropDownList(Infragistics.Win.UltraWinGrid.UltraGrid _grid,System.Data.DataSet _ds,string _tableName,string _displayColumn,string _displayMember,string _ValueMember) { try { _grid.DisplayLayout.Bands[_tableName].Columns[_displayColumn].Style = Infragistics.Win.UltraWinGrid.ColumnStyle.DropDownList; Infragistics.Win.UltraWinGrid.UltraDropDown ultraCombo = new Infragistics.Win.UltraWinGrid.UltraDropDown(); _grid.FindForm().Controls.Add(ultraCombo); ultraCombo.DisplayMember = _ds.Tables[0].Columns[_displayMember].ToString(); ultraCombo.ValueMember = _ds.Tables[0].Columns[_ValueMember].ToString(); ultraCombo.Visible = false; ultraCombo.DataSource = _ds.Tables[0].DefaultView;//++ ultraCombo.Width = _grid.DisplayLayout.Bands[_tableName].Columns[_displayColumn].RowLayoutColumnInfo.PreferredCellSize.Width;//++ foreach(System.Data.DataColumn col in _ds.Tables[0].Columns) { if(col.ColumnName != _displayMember) { ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Hidden = true; } else { ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Band.ColHeadersVisible = false; ultraCombo.DisplayLayout.Bands[0].Columns[col.ColumnName].Width = ultraCombo.Width; } } _grid.DisplayLayout.Bands[_tableName].Columns[_displayColumn].ValueList = ultraCombo; _grid.DisplayLayout.Bands[_tableName].Columns[_displayColumn].CellAppearance.TextHAlign = Infragistics.Win.HAlign.Left; _grid.DisplayLayout.Bands[_tableName].Columns[_displayColumn].CellAppearance.TextVAlign = Infragistics.Win.VAlign.Middle; } catch(Exception ex) { System.Diagnostics.Debug.WriteLine(ex.ToString()); } } /// /// 初始化Infragistics.Win.UltraWinGrid.UltraCombo 控件绑定表 /// /// Grid /// DataSet /// 绑定表名 /// 绑定列名 /// 显示项 /// 值项 /// public static void Init_ComboControl(System.Windows.Forms.Control ComboControl,string TableName,string _displayMember,string _valueMember,ref System.Data.DataSet dst) { try { switch(ComboControl.GetType().ToString()) { case "Infragistics.Win.UltraWinGrid.UltraCombo": if(!dst.Tables.Contains(TableName)) { MessageBox.Show("绑定表:"+TableName+"不存在,不能对控件"+ComboControl.Name+"进行初始化!"); return; } System.Data.DataTable newTable = dst.Tables[TableName].Copy(); newTable.TableName=TableName; System.Data.DataRow newRow = newTable.NewRow(); for(int i=0;i /// 获取grid-选择字段="TRUE"的行数 /// /// 目标grid /// int /// public static int GetSelectRows(Infragistics.Win.UltraWinGrid.UltraGrid ulGrid) { int rowsCount = 0; foreach(Infragistics.Win.UltraWinGrid.UltraGridRow row in ulGrid.Rows) { GetTrueRows(row,ref rowsCount); } return rowsCount; } private static void GetTrueRows( Infragistics.Win.UltraWinGrid.UltraGridRow row,ref int TrueNum) { if(row.GetType()==typeof(Infragistics.Win.UltraWinGrid.UltraGridRow)) { if(row.Cells["Select"].Value.ToString().ToUpper()=="TRUE") { TrueNum++; } } else { foreach(Infragistics.Win.UltraWinGrid.UltraGridRow tmprow in row.ChildBands[0].Rows) { GetTrueRows(tmprow,ref TrueNum); } } } /// /// 获取grid-选择字段="TRUE"指定字段值 /// /// 存在选择行的UltraGrid /// 选择字段 /// 字段值 /// ArrayList public static System.Collections.ArrayList GetFieldValue(Infragistics.Win.UltraWinGrid.UltraGrid _SelectGrid,string _Select,string _FieldValue) { System.Collections.ArrayList resultArray = new System.Collections.ArrayList(); foreach(Infragistics.Win.UltraWinGrid.UltraGridRow row in _SelectGrid.Rows) { if(ObjToStr(row.Cells[_Select].Value).ToUpper() == "TRUE") resultArray.Add(ObjToStr(row.Cells[_FieldValue].Value)); } return resultArray; } /// /// 设置ulGridRow指定字段值 /// /// 目标GridRow /// 设置值 /// 字段KEY /// public static void SetGridFlagValue(Infragistics.Win.UltraWinGrid.UltraGridRow GridRow,string _Value,string Key) { if(GridRow.GetType()==typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow)) { foreach(Infragistics.Win.UltraWinGrid.UltraGridRow row in GridRow.ChildBands[0].Rows) { SetGridFlagValue(row,_Value,Key); } } else { if(!GridRow.IsFilteredOut) GridRow.Cells[Key].Value = _Value; } } /// /// 获取ulGridRow指定字段值(针对有分组行时) /// /// UltraGridRow /// 选择字段KEY /// 比对值 /// 指定字段KEY /// 返回制定字段值数组 /// public static void GetAdjustData(Infragistics.Win.UltraWinGrid.UltraGridRow row,string _Key,string _CompareValue,string _CellKey,ref ArrayList _ResultField) { if(row.GetType()==typeof(Infragistics.Win.UltraWinGrid.UltraGridRow)) { if(Comm.ObjToStr(row.Cells[_Key].Value).ToUpper() == _CompareValue) { _ResultField.Add(Comm.ObjToStr(row.Cells[_CellKey].Value)); } } else { foreach(Infragistics.Win.UltraWinGrid.UltraGridRow tmprow in row.ChildBands[0].Rows) { GetAdjustData(tmprow,_Key,_CompareValue,_CellKey,ref _ResultField); } } } } }