reportCommon.cs 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Text;
  4. using System.Windows.Forms;
  5. using System.IO;
  6. using System.Diagnostics;
  7. using System.Data;
  8. using Infragistics.Win.UltraWinGrid;
  9. using Infragistics.Win.UltraWinGrid.ExcelExport;
  10. using System.Runtime.InteropServices;
  11. using CoreFS.CA06;
  12. using Infragistics.Win;
  13. using Core.LgMes.Client.Comm;
  14. using System.Collections;
  15. using System.Drawing;
  16. using Infragistics.Win.UltraWinEditors;
  17. using System.Xml;
  18. using System.Data.OleDb;
  19. using Core.Mes.Client.Common;
  20. namespace Core.LgMes.Client.Report
  21. {
  22. class reportCommon
  23. {
  24. private static UltraGridExcelExporter ultraGridExcelExporter1 = new UltraGridExcelExporter();
  25. public CoreFS.CA06.OpeBase ob = null;
  26. public static void SetUltraGridColumnsReadOnly(ref UltraGrid ultGrid)
  27. {
  28. try
  29. {
  30. foreach (UltraGridBand band in ultGrid.DisplayLayout.Bands)
  31. {
  32. foreach (UltraGridColumn column in band.Columns)
  33. {
  34. column.CellActivation = Activation.ActivateOnly;
  35. }
  36. }
  37. }
  38. catch (Exception ex)
  39. {
  40. MessageBox.Show(ex.Message);
  41. }
  42. }
  43. public static void ExportData(ref UltraGrid ultGrid, string strFileName)
  44. {
  45. try
  46. {
  47. if (ultGrid.Rows.Count == 0) return;
  48. if (strFileName.Length == 0)
  49. strFileName = "未命名";
  50. strFileName = string.Format(Application.StartupPath + "\\Report\\{0}.xls", strFileName);
  51. ultraGridExcelExporter1.Export(ultGrid, strFileName);
  52. ProcessStartInfo p = new ProcessStartInfo(strFileName);
  53. p.WorkingDirectory = Path.GetDirectoryName(strFileName);
  54. Process.Start(p);
  55. }
  56. catch (Exception ex)
  57. {
  58. MessageBox.Show(ex.Message);
  59. }
  60. }
  61. public static bool ExcelInstalled()
  62. {
  63. bool bInstalled = (Type.GetTypeFromProgID("Excel.Application") != null);
  64. if (!bInstalled)
  65. {
  66. MessageBox.Show("系统没有安装EXCEL组件,无法导出数据!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  67. }
  68. return bInstalled;
  69. }
  70. public static void Export2Excel(ref UltraGrid ultGrid, string strTemplateName, string strFileName,
  71. ref int iStartRowNum, ref int[] iCaptionX, ref int[] iCaptionY, ref string[] strCaptionFromColumns,
  72. ref string[] strColumns, ref int[] iStartX, ref int[] iWidth, ref int[] iOffsetY, ref int[] iHeight, ref int[] iPlainText)
  73. {
  74. try
  75. {
  76. if (ultGrid.Rows.Count == 0) return;
  77. if (strTemplateName.Trim().Length == 0) return;
  78. strTemplateName = Application.StartupPath + "\\Report\\" + strTemplateName + ".xls";
  79. if (!File.Exists(strTemplateName))
  80. {
  81. MessageBox.Show("找不到指定的模版文件,数据导出失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  82. return;
  83. }
  84. if (strFileName.Length == 0) strFileName = "未命名";
  85. strFileName = Application.StartupPath + "\\Report\\" + strFileName + ".xls";
  86. if (File.Exists(strFileName)) File.Delete(strFileName);
  87. File.Copy(strTemplateName, strFileName);
  88. File.SetAttributes(strFileName, FileAttributes.Normal);
  89. Microsoft.Office.Interop.Excel.ApplicationClass excelApp = new Microsoft.Office.Interop.Excel.ApplicationClass();
  90. if (excelApp == null)
  91. {
  92. MessageBox.Show("无法启动EXCEL,数据导出失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
  93. return;
  94. }
  95. excelApp.Visible = false;
  96. Microsoft.Office.Interop.Excel.Workbook excelWorkbook = excelApp.Workbooks.Open(strFileName,
  97. Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
  98. Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing);
  99. for (int i = 0; i < strCaptionFromColumns.Length; i++)
  100. {
  101. excelApp.Cells[iCaptionY[i], iCaptionX[i]] = Convert.ToString(ultGrid.DisplayLayout.Bands[0].Columns[strCaptionFromColumns[i]].Header.Caption);
  102. }
  103. int iStart = iStartRowNum;
  104. int iMaxHeight = 1;
  105. string strValue = "";
  106. Microsoft.Office.Interop.Excel.Range cellRange;
  107. for (int i = 0; i < ultGrid.Rows.Count; i++)
  108. {
  109. for (int j = 0; j < strColumns.Length; j++)
  110. {
  111. cellRange = excelApp.get_Range(excelApp.Cells[iStart + iOffsetY[j], iStartX[j]], excelApp.Cells[iStart + iOffsetY[j] + iHeight[j] - 1, iStartX[j] + iWidth[j] - 1]);
  112. cellRange.Merge(null);
  113. cellRange.HorizontalAlignment = Microsoft.Office.Interop.Excel.XlHAlign.xlHAlignLeft;
  114. cellRange.VerticalAlignment = Microsoft.Office.Interop.Excel.XlVAlign.xlVAlignCenter;
  115. cellRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
  116. strValue = Convert.ToString(ultGrid.Rows[i].Cells[strColumns[j]].Value);
  117. if (iPlainText[j] == 1 && strValue.Length > 0)
  118. strValue = "'" + strValue; //以纯文本格式显示
  119. cellRange.Value2 = strValue;
  120. if (iHeight[j] > iMaxHeight)
  121. iMaxHeight = iHeight[j];
  122. }
  123. iStart += iMaxHeight;
  124. }
  125. excelWorkbook.Save();
  126. excelWorkbook.Close(true, Type.Missing, Type.Missing);
  127. excelApp.Workbooks.Close();
  128. excelApp.Quit();
  129. Marshal.ReleaseComObject(excelWorkbook);
  130. Marshal.ReleaseComObject(excelApp.Workbooks);
  131. Marshal.ReleaseComObject(excelApp);
  132. GC.Collect(GC.GetGeneration(excelApp));
  133. excelApp = null;
  134. ProcessStartInfo p = new ProcessStartInfo(strFileName);
  135. p.WorkingDirectory = Path.GetDirectoryName(strFileName);
  136. Process.Start(p);
  137. }
  138. catch (Exception ex)
  139. {
  140. MessageBox.Show(ex.Message);
  141. }
  142. }
  143. public static string ConstructSteelNames(string strSteelNamesIn)
  144. {
  145. if (strSteelNamesIn.Trim().Length == 0)
  146. return string.Empty;
  147. if (!strSteelNamesIn.Trim().Contains(",") && !strSteelNamesIn.Trim().Contains(","))
  148. return "'" + strSteelNamesIn.Trim().ToUpper() + "'";
  149. string[] strSteel = strSteelNamesIn.Trim().Split(new string[] { ",", "," }, StringSplitOptions.None);
  150. string strRet = "";
  151. for (int i = 0; i < strSteel.Length; i++)
  152. {
  153. if (i == 0)
  154. strRet = "'" + (strSteel[i].Trim().Length == 0 ? "null" : strSteel[i].Trim()) + "'";
  155. else
  156. strRet += ",'" + (strSteel[i].Trim().Length == 0 ? "null" : strSteel[i].Trim()) + "'";
  157. }
  158. return strRet.ToUpper();
  159. }
  160. /// <summary>
  161. /// 将长整型转换浮点型
  162. /// </summary>
  163. /// <param name="lgValue"></param>
  164. /// <returns></returns>
  165. public static float LongToFloat(long lgValue)
  166. {
  167. float flValue = 0;
  168. try
  169. {
  170. if (lgValue >= 0)
  171. {
  172. byte[] btValue = LongToHex(lgValue);
  173. flValue = HexToFloat(btValue);
  174. }
  175. }
  176. catch { }
  177. return flValue;
  178. }
  179. private static unsafe byte[] LongToHex(long lValue)
  180. {
  181. long[] lValuePtr = new long[1];
  182. int sizeOfValue = Marshal.SizeOf(typeof(long));
  183. byte[] byteValue = new byte[sizeOfValue];
  184. lValuePtr[0] = lValue;
  185. fixed (long* pTempValue = lValuePtr)
  186. {
  187. Marshal.Copy(new IntPtr(pTempValue), byteValue, 0, sizeOfValue);
  188. }
  189. return byteValue;
  190. }
  191. private static unsafe float HexToFloat(byte[] byteValue)
  192. {
  193. float[] fltValuePtr = new float[1];
  194. int sizeOfValue = Marshal.SizeOf(typeof(float));
  195. fixed (float* pTempValue = fltValuePtr)
  196. {
  197. Marshal.Copy(byteValue, 0, new IntPtr(pTempValue), sizeOfValue);
  198. }
  199. return fltValuePtr[0];
  200. }
  201. /// <summary>
  202. /// 获取牌号
  203. /// </summary>
  204. /// <returns></returns>
  205. public static DataSet GetSteel()
  206. {
  207. DataSet dsSteel = new DataSet();
  208. try
  209. {
  210. string strErr = "";
  211. string strSql = "select steelcode CODE, Steel CODE_DESC from scm_steel t where t.largeflag='1' order by steelcode";
  212. //hengxing ClientCommon._RemotingHelp.ExecuteMethod(par, out strErr) as DataSet;
  213. ArrayList arrySteel = new ArrayList();
  214. arrySteel.Add("GetSteelInfo.select");
  215. CommonClientToServer cctos = new CommonClientToServer();
  216. //cctos.ob = ob;
  217. DataSet ds = cctos.ExecuteQueryFunctions("Core.LgMes.Server.Common.ComDBQuery",
  218. "doSimpleQuery", arrySteel, out strErr);
  219. if (strErr == "" && ds != null)
  220. {
  221. dsSteel = ds;
  222. }
  223. else
  224. {
  225. MessageBox.Show("钢种加载失败!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
  226. if (MessageBox.Show("是否重新加载钢种?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  227. GetSteel();
  228. }
  229. }
  230. catch (Exception ex)
  231. {
  232. MessageBox.Show(ex.Message);
  233. }
  234. return dsSteel;
  235. }
  236. /// <summary>
  237. /// 设置UltraGrid列样式为DownList
  238. /// </summary>
  239. /// <param name="ultragridValue">要设置的UltraGrid</param>
  240. /// <param name="dsValue">DataSet数据</param>
  241. /// <param name="strID">DownList的Value值</param>
  242. /// <param name="strName">DownList的Text值</param>
  243. /// <param name="strColumnsName">设置的列名</param>
  244. public static void SetUltraGridDownList(Infragistics.Win.UltraWinGrid.UltraGrid ultragridValue,
  245. DataSet dsValue, string strID, string strName, string strColumnsName)
  246. {
  247. //获取单位
  248. DataSet ds = dsValue;
  249. //增加Grid单位字段数据集
  250. ultragridValue.DisplayLayout.ValueLists.Add(strColumnsName);
  251. //初始经Grid单位字段数据集
  252. for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  253. {
  254. ultragridValue.DisplayLayout.ValueLists[strColumnsName].ValueListItems.Add(ds.Tables[0].Rows[i][strID].ToString(), ds.Tables[0].Rows[i][strName].ToString());
  255. }
  256. //绑定单位
  257. ultragridValue.DisplayLayout.Bands[0].Columns[strColumnsName].ValueList = ultragridValue.DisplayLayout.ValueLists[strColumnsName];
  258. }
  259. public static void SetGridFontData(ref UltraGrid grid, DefaultableBoolean CaptionVisible)
  260. {
  261. try
  262. {
  263. grid.DisplayLayout.CaptionVisible = CaptionVisible;
  264. grid.Font = new Font("宋体", 9F);
  265. grid.DisplayLayout.CaptionAppearance.TextHAlign = HAlign.Center;
  266. grid.DisplayLayout.CaptionAppearance.TextVAlign = VAlign.Middle;
  267. grid.DisplayLayout.CaptionAppearance.FontData.Name = "宋体";
  268. grid.DisplayLayout.CaptionAppearance.FontData.SizeInPoints = 10.5F;
  269. grid.DisplayLayout.CaptionAppearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
  270. grid.DisplayLayout.Override.CellAppearance.FontData.Name = "宋体";
  271. grid.DisplayLayout.Override.CellAppearance.FontData.SizeInPoints = 9F;
  272. grid.DisplayLayout.Override.HeaderAppearance.FontData.Name = "宋体";
  273. grid.DisplayLayout.Override.HeaderAppearance.FontData.SizeInPoints = 9F;
  274. grid.DisplayLayout.Override.HeaderAppearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
  275. grid.DisplayLayout.Override.SummaryFooterAppearance.FontData.Name = "宋体";
  276. grid.DisplayLayout.Override.SummaryFooterAppearance.FontData.SizeInPoints = 9F;
  277. grid.DisplayLayout.Override.SummaryFooterAppearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
  278. grid.DisplayLayout.Override.SummaryValueAppearance.BackColor = Color.LightGreen;
  279. grid.DisplayLayout.Override.SummaryValueAppearance.FontData.Name = "宋体";
  280. grid.DisplayLayout.Override.SummaryValueAppearance.FontData.SizeInPoints = 9F;
  281. grid.DisplayLayout.Override.SummaryValueAppearance.FontData.Bold = Infragistics.Win.DefaultableBoolean.True;
  282. grid.DisplayLayout.Override.RowSelectorAppearance.FontData.Name = "宋体";
  283. grid.DisplayLayout.Override.RowSelectorAppearance.FontData.SizeInPoints = 9F;
  284. grid.DisplayLayout.Override.RowSelectorAppearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  285. }
  286. catch { }
  287. }
  288. public static void proc_DecodePath(ref DataTable table)
  289. {
  290. if (table == null || !table.Columns.Contains("作业路线"))
  291. {
  292. return;
  293. }
  294. string strSrcPath = "", strDesPath = "";
  295. for (int i = 0; i < table.Rows.Count; i++)
  296. {
  297. try
  298. {
  299. strSrcPath = Convert.ToString(table.Rows[i]["作业路线"]);
  300. strDesPath = CStaticMethod.analysPath(strSrcPath);
  301. table.Rows[i]["作业路线"] = strDesPath;
  302. }
  303. catch { }
  304. }
  305. }
  306. //Add on 2009-10-25 by XHJ
  307. public static void ExportDataWithSaveDialog(ref UltraGrid ultGrid, string strFileName)
  308. {
  309. try
  310. {
  311. if (ultGrid.Rows.Count == 0) return;
  312. if (strFileName.Length == 0)
  313. strFileName = "未命名";
  314. SaveFileDialog dlg = new SaveFileDialog();
  315. dlg.Title = "保存";
  316. dlg.OverwritePrompt = true;
  317. dlg.Filter = "Excel文件(*.xls)|*.xls";
  318. dlg.AddExtension = true;
  319. dlg.FileName = strFileName;
  320. if (dlg.ShowDialog() == DialogResult.OK)
  321. {
  322. strFileName = dlg.FileName;
  323. ultraGridExcelExporter1.Export(ultGrid, strFileName);
  324. if (MessageBox.Show("数据导出成功!\r\n需要打开所导出文件吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
  325. {
  326. ultraGridExcelExporter1.Export(ultGrid, strFileName);
  327. ProcessStartInfo p = new ProcessStartInfo(strFileName);
  328. p.WorkingDirectory = Path.GetDirectoryName(strFileName);
  329. Process.Start(p);
  330. }
  331. }
  332. }
  333. catch (Exception ex)
  334. {
  335. MessageBox.Show(ex.Message);
  336. }
  337. }
  338. public static void SetGridRowFilter(ref UltraGrid ultGrid, bool bAllowFilter)
  339. {
  340. try
  341. {
  342. if (bAllowFilter)
  343. {
  344. ultGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
  345. }
  346. else
  347. {
  348. ultGrid.DisplayLayout.Bands[0].ColumnFilters.ClearAllFilters();
  349. ultGrid.DisplayLayout.Override.AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
  350. }
  351. }
  352. catch { }
  353. }
  354. public static void proc_Statics_Avg2(ref UltraGrid ultraGrid, ArrayList alistColumns, bool clearExists, ArrayList alistFormat)
  355. {
  356. try
  357. {
  358. if (alistColumns == null)
  359. {
  360. return;
  361. }
  362. UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
  363. if (clearExists)
  364. band.Summaries.Clear();
  365. SummarySettings summary = null;
  366. UltraGridColumn cl = null;
  367. foreach (UltraGridColumn column in ultraGrid.DisplayLayout.Bands[0].Columns)
  368. {
  369. if (column.ToString() == "第二炼钢厂转炉生产调度表")
  370. {
  371. if (column.RowLayoutColumnInfo.OriginX == 1)
  372. {
  373. cl = column;
  374. break;
  375. }
  376. }
  377. else
  378. {
  379. if (column.RowLayoutColumnInfo.OriginX == 0)
  380. {
  381. cl = column;
  382. break;
  383. }
  384. }
  385. }
  386. summary = band.Summaries.Add(SummaryType.Count, cl);
  387. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  388. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  389. summary.DisplayFormat = "平均:";
  390. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
  391. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  392. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  393. string strFormat = "";
  394. for (int i = 0; i < alistColumns.Count; i++)
  395. {
  396. try
  397. {
  398. try
  399. {
  400. strFormat = alistFormat[i].ToString();
  401. }
  402. catch
  403. {
  404. strFormat = " {0:############0.00}";
  405. }
  406. summary = band.Summaries.Add(SummaryType.Average, band.Columns[alistColumns[i].ToString()]);
  407. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  408. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  409. summary.DisplayFormat = strFormat;
  410. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
  411. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  412. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  413. summary.Appearance.ForeColor = Color.DarkBlue;
  414. summary.Appearance.BackColor = Color.White;
  415. }
  416. catch { }
  417. }
  418. band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
  419. }
  420. catch { }
  421. }
  422. public static void proc_Statics(ref UltraGrid ultraGrid, ArrayList alistColumns, bool clearExists, string strFormat)
  423. {
  424. try
  425. {
  426. if (alistColumns == null)
  427. {
  428. return;
  429. }
  430. UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
  431. if (clearExists)
  432. band.Summaries.Clear();
  433. SummarySettings summary = null;
  434. UltraGridColumn cl = null;
  435. foreach (UltraGridColumn column in ultraGrid.DisplayLayout.Bands[0].Columns)
  436. {
  437. if (column.ToString() == "第二炼钢厂转炉生产调度表")
  438. {
  439. if (column.RowLayoutColumnInfo.OriginX == 1)
  440. {
  441. cl = column;
  442. break;
  443. }
  444. }
  445. else
  446. {
  447. if (column.RowLayoutColumnInfo.OriginX == 0)
  448. {
  449. cl = column;
  450. break;
  451. }
  452. }
  453. }
  454. summary = band.Summaries.Add(SummaryType.Count, cl);
  455. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  456. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  457. summary.DisplayFormat = "合计:";
  458. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
  459. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  460. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  461. if (string.IsNullOrEmpty(strFormat.Trim()))
  462. {
  463. strFormat = " {0:############0.00}";
  464. }
  465. for (int i = 0; i < alistColumns.Count; i++)
  466. {
  467. try
  468. {
  469. summary = band.Summaries.Add(SummaryType.Sum, band.Columns[alistColumns[i].ToString()]);
  470. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  471. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  472. summary.DisplayFormat = strFormat;
  473. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
  474. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  475. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  476. summary.Appearance.ForeColor = Color.DarkBlue;
  477. summary.Appearance.BackColor = Color.White;
  478. }
  479. catch { }
  480. }
  481. band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
  482. }
  483. catch { }
  484. }
  485. public static void proc_Statics_Avg(ref UltraGrid ultraGrid, ArrayList alistColumns, bool clearExists, string strFormat)
  486. {
  487. try
  488. {
  489. if (alistColumns == null)
  490. {
  491. return;
  492. }
  493. UltraGridBand band = ultraGrid.DisplayLayout.Bands[0];
  494. if (clearExists)
  495. band.Summaries.Clear();
  496. SummarySettings summary = band.Summaries.Add(SummaryType.Count, band.Columns[0]);
  497. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  498. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  499. summary.DisplayFormat = "平均:";
  500. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
  501. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  502. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  503. if (string.IsNullOrEmpty(strFormat.Trim()))
  504. {
  505. strFormat = " {0:############0.00}";
  506. }
  507. for (int i = 0; i < alistColumns.Count; i++)
  508. {
  509. try
  510. {
  511. summary = band.Summaries.Add(SummaryType.Average, band.Columns[alistColumns[i].ToString()]);
  512. summary.SummaryDisplayArea = SummaryDisplayAreas.BottomFixed;
  513. summary.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  514. summary.DisplayFormat = strFormat;
  515. summary.Appearance.TextHAlign = Infragistics.Win.HAlign.Right;
  516. summary.Appearance.TextVAlign = Infragistics.Win.VAlign.Middle;
  517. summary.Appearance.FontData.Bold = DefaultableBoolean.True;
  518. summary.Appearance.ForeColor = Color.DarkBlue;
  519. summary.Appearance.BackColor = Color.White;
  520. }
  521. catch { }
  522. }
  523. band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
  524. }
  525. catch { }
  526. }
  527. /// <summary>
  528. /// 汇总函数
  529. /// </summary>
  530. /// <param name="ultraMain"></param>
  531. public static void SetSum(UltraGrid ultraMain)
  532. {
  533. //定义存放汇总方式(0:标题,1:计数,2:合计,3:平均,4:最大,5:最小)
  534. string[] strOpt = new string[6];
  535. UltraGridBand band = ultraMain.DisplayLayout.Bands[0];
  536. try
  537. {
  538. band.Summaries.Clear();
  539. SummarySettings summaryCount = new SummarySettings(); //计数
  540. SummarySettings summarySum = new SummarySettings(); //求和
  541. SummarySettings summaryAvg = new SummarySettings(); //平均
  542. SummarySettings summaryMax = new SummarySettings(); //最大值
  543. SummarySettings summaryMin = new SummarySettings(); //最小值
  544. for (int i = 0; i < ultraMain.DisplayLayout.Bands[0].Columns.Count; i++)
  545. {
  546. if (ultraMain.DisplayLayout.Bands[0].Columns[i].Tag != null)
  547. {
  548. strOpt[0] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(0, 1);
  549. if (strOpt[0] == "1") //标题
  550. {
  551. summaryCount = band.Summaries.Add(SummaryType.Count, band.Columns[i]);
  552. summaryCount.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  553. summaryCount.DisplayFormat = "计数:";
  554. summarySum = band.Summaries.Add(SummaryType.Sum, band.Columns[i]);
  555. summarySum.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  556. summarySum.DisplayFormat = "求和:";
  557. summaryAvg = band.Summaries.Add(SummaryType.Average, band.Columns[i]);
  558. summaryAvg.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  559. summaryAvg.DisplayFormat = "平均:";
  560. summaryMax = band.Summaries.Add(SummaryType.Maximum, band.Columns[i]);
  561. summaryMax.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  562. summaryMax.DisplayFormat = "最大值:";
  563. summaryMin = band.Summaries.Add(SummaryType.Minimum, band.Columns[i]);
  564. summaryMin.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  565. summaryMin.DisplayFormat = "最小值:";
  566. break;
  567. }
  568. }
  569. }
  570. for (int i = 0; i < ultraMain.DisplayLayout.Bands[0].Columns.Count; i++)
  571. {
  572. if (ultraMain.DisplayLayout.Bands[0].Columns[i].Tag != null)
  573. {
  574. strOpt[0] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(0, 1);
  575. strOpt[1] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(1, 1);
  576. strOpt[2] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(2, 1);
  577. strOpt[3] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(3, 1);
  578. strOpt[4] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(4, 1);
  579. strOpt[5] = ultraMain.DisplayLayout.Bands[0].Columns[i].Tag.ToString().Substring(5, 1);
  580. if (strOpt[0] == "0")
  581. {
  582. if (strOpt[1] == "1") //计数
  583. {
  584. SetSummaryMod(summaryCount, SummaryType.Count, band, i);
  585. }
  586. if (strOpt[2] == "1") //求和
  587. {
  588. SetSummaryMod(summarySum, SummaryType.Sum, band, i);
  589. }
  590. if (strOpt[3] == "1") //平均
  591. {
  592. SetSummaryMod(summaryAvg, SummaryType.Average, band, i);
  593. }
  594. if (strOpt[4] == "1") //最大
  595. {
  596. SetSummaryMod(summaryMax, SummaryType.Maximum, band, i);
  597. }
  598. if (strOpt[5] == "1") //最小
  599. {
  600. SetSummaryMod(summaryMin, SummaryType.Minimum, band, i);
  601. }
  602. }
  603. }
  604. }
  605. band.Override.SummaryFooterCaptionVisible = Infragistics.Win.DefaultableBoolean.False;
  606. }
  607. catch
  608. {
  609. }
  610. }
  611. /// <summary>
  612. /// 添加汇总
  613. /// </summary>
  614. /// <param name="summaryMain">汇总块</param>
  615. /// <param name="sumtype">汇总类型</param>
  616. /// <param name="ultraBand">UltraGrid.Band</param>
  617. private static void SetSummaryMod(SummarySettings summaryMain, SummaryType sumtype, UltraGridBand ultraBand, int intindex)
  618. {
  619. try
  620. {
  621. summaryMain = ultraBand.Summaries.Add(sumtype, ultraBand.Columns[intindex]);
  622. summaryMain.SummaryPosition = SummaryPosition.UseSummaryPositionColumn;
  623. if (sumtype == SummaryType.Count)
  624. summaryMain.DisplayFormat = " {0:#####}";
  625. else
  626. summaryMain.DisplayFormat = " {0:#####.00}";
  627. summaryMain.Appearance.TextHAlign = Infragistics.Win.HAlign.Center;
  628. summaryMain.Appearance.ForeColor = Color.DarkBlue;
  629. summaryMain.Appearance.BackColor = Color.White;
  630. }
  631. catch
  632. {
  633. }
  634. }
  635. /// <summary>
  636. /// 设置列名汇总
  637. /// </summary>
  638. /// <param name="ultGrid"></param>
  639. /// <param name="bAllowFilter"></param>
  640. /// <param name="ultrachk"></param>
  641. public static void SetStatisticsMod(ref UltraGrid ultGrid, bool bAllowFilter, ref UltraCheckEditor ultrachk)
  642. {
  643. try
  644. {
  645. if (bAllowFilter)
  646. {
  647. frmSetStatisticsMode frmSetMode = new frmSetStatisticsMode(ref ultGrid);
  648. frmSetMode.WindowState = FormWindowState.Normal;
  649. frmSetMode.StartPosition = FormStartPosition.CenterParent;
  650. frmSetMode.ShowDialog();
  651. if (frmSetMode.htMode.Count == 0)
  652. {
  653. ultrachk.Checked = false;
  654. return;
  655. }
  656. else
  657. {
  658. foreach (DictionaryEntry de in frmSetMode.htMode)
  659. {
  660. if (ultGrid.DisplayLayout.Bands[0].Columns[de.Key.ToString()].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly
  661. || ultGrid.DisplayLayout.Bands[0].Columns[de.Key.ToString()].Hidden == false)
  662. {
  663. ultGrid.DisplayLayout.Bands[0].Columns[de.Key.ToString()].Tag = de.Value.ToString();
  664. }
  665. }
  666. SetSum(ultGrid);
  667. }
  668. }
  669. else
  670. {
  671. ultGrid.DisplayLayout.Bands[0].Summaries.Clear();
  672. }
  673. }
  674. catch { }
  675. }
  676. /// <summary>
  677. /// 设置列名汇总
  678. /// </summary>
  679. /// <param name="ultGrid"></param>
  680. /// <param name="bAllowFilter"></param>
  681. /// <param name="ultrachk"></param>
  682. public static void SetColHide(ref UltraGrid ultGrid)
  683. {
  684. try
  685. {
  686. frmSetColHide frmSetMode = new frmSetColHide(ref ultGrid);
  687. frmSetMode.WindowState = FormWindowState.Normal;
  688. frmSetMode.StartPosition = FormStartPosition.CenterParent;
  689. frmSetMode.ShowDialog();
  690. if (frmSetMode.htMode.Count == 0)
  691. {
  692. return;
  693. }
  694. else
  695. {
  696. foreach (DictionaryEntry de in frmSetMode.htMode)
  697. {
  698. ultGrid.DisplayLayout.Bands[0].Columns[de.Key.ToString()].Hidden = Convert.ToBoolean(de.Value);
  699. }
  700. }
  701. }
  702. catch { }
  703. }
  704. #region "导出到EXCEL测试程序"
  705. public static void exportToExcelByDataset(string filePath, DataSet ds, UltraGrid ultGrid)
  706. {
  707. string sqlstr;
  708. FileInfo fi = new FileInfo(filePath);
  709. if (fi.Exists)
  710. {
  711. fi.Delete();
  712. // throw new Exception("文件删除失败");
  713. }
  714. else
  715. {
  716. fi.Create();
  717. }
  718. string sqlcon = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended ProPerties=Excel 8.0;";
  719. OleDbConnection olecon = new OleDbConnection(sqlcon);
  720. OleDbCommand olecmd = new OleDbCommand();
  721. olecmd.Connection = olecon;
  722. olecmd.CommandType = CommandType.Text;
  723. try
  724. {
  725. olecon.Open();
  726. int ii = 0;
  727. sqlstr = "CREATE TABLE BOFTABLE(";
  728. foreach (UltraGridColumn ultCol in ultGrid.DisplayLayout.Bands[0].Columns)
  729. {
  730. if (!String.IsNullOrEmpty(ultCol.Header.Caption)
  731. && ultCol.Hidden == false)
  732. {
  733. if (ii == ultGrid.DisplayLayout.Bands[0].Columns.Count - 1)
  734. {
  735. if (ultCol.DataType.ToString() == "System.Double")
  736. sqlstr = sqlstr + ultCol.Key.ToString() + " number)";
  737. else
  738. sqlstr = sqlstr + ultCol.Key.ToString() + " varchar(40))";
  739. }
  740. else
  741. {
  742. if (ultCol.DataType.ToString() == "System.Dublue")
  743. sqlstr = sqlstr + ultCol.Key.ToString() + " number,";
  744. else
  745. sqlstr = sqlstr + ultCol.Key.ToString() + " varchar(20),";
  746. }
  747. }
  748. ii++;
  749. }
  750. olecmd.CommandText = sqlstr;
  751. olecmd.ExecuteNonQuery();
  752. for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
  753. {
  754. sqlstr = "INSERT INTO sheet1 VALUES(";
  755. int jj = 0;
  756. foreach (UltraGridColumn ultCol in ultGrid.DisplayLayout.Bands[0].Columns)
  757. {
  758. if (!String.IsNullOrEmpty(ultCol.Header.Caption)
  759. && ultCol.Hidden == false)
  760. {
  761. if (jj == ultGrid.DisplayLayout.Bands[0].Columns.Count-1)
  762. {
  763. if (ultCol.DataType.ToString() == "System.Dublue")
  764. {
  765. sqlstr = sqlstr + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString()) + ")";
  766. }
  767. else
  768. {
  769. sqlstr = sqlstr + "'" + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'", "''")) + "')";
  770. }
  771. }
  772. else
  773. {
  774. if (ultCol.DataType.ToString() == "System.Dublue")
  775. {
  776. sqlstr = sqlstr + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString()) + ",";
  777. }
  778. else
  779. {
  780. sqlstr = sqlstr + "'" + isnull(ds.Tables[0].Rows[i].ItemArray[jj].ToString().Replace("'", "''")) + "',";
  781. }
  782. }
  783. }
  784. jj++;
  785. }
  786. olecmd.CommandText = sqlstr;
  787. olecmd.ExecuteNonQuery();
  788. }
  789. MessageBox.Show(@"Excel文件:" + filePath + " 导出成功!");
  790. }
  791. catch (Exception ex)
  792. {
  793. MessageBox.Show(ex.Message);
  794. }
  795. finally
  796. {
  797. olecmd.Dispose();
  798. olecon.Close();
  799. olecon.Dispose();
  800. }
  801. }
  802. /// <summary>
  803. /// change to string "null" if input is null
  804. /// </summary>
  805. /// <param name="obj"></param>
  806. /// <returns></returns>
  807. private static string isnull(string obj)
  808. {
  809. if (obj.Length > 0)
  810. {
  811. return obj;
  812. }
  813. else
  814. {
  815. return "null";
  816. }
  817. }
  818. #endregion
  819. /// <summary>
  820. /// 自动调整列宽
  821. /// </summary>
  822. /// <param name="grid"></param>
  823. public static void AutoSizeColumn(Infragistics.Win.UltraWinGrid.UltraGrid grid)
  824. {
  825. if (grid.DisplayLayout.Bands.Count >= 1)
  826. {
  827. foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn c in grid.DisplayLayout.Bands[0].Columns)
  828. {
  829. c.PerformAutoResize(10);
  830. }
  831. }
  832. if (grid.DisplayLayout.Bands.Count >= 2)
  833. {
  834. foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn c in grid.DisplayLayout.Bands[1].Columns)
  835. {
  836. c.PerformAutoResize(10);
  837. }
  838. }
  839. if (grid.DisplayLayout.Bands.Count >= 3)
  840. {
  841. foreach (Infragistics.Win.UltraWinGrid.UltraGridColumn c in grid.DisplayLayout.Bands[2].Columns)
  842. {
  843. c.PerformAutoResize(PerformAutoSizeType.AllRowsInBand);
  844. }
  845. }
  846. }
  847. public static DataSet returnDataSet(string sqlStr)
  848. {
  849. DataSet ds = new DataSet();
  850. return ds;
  851. }
  852. }
  853. }