using System; using Excel; using Microsoft.Office.Core; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using DevExpress.XtraEditors; namespace MedicineSaleSystem { public partial class XForm_JDT : DevExpress.XtraEditors.XtraForm { private System.Data.DataTable MyExcel_D = new System.Data.DataTable(); private System.Data.DataTable MyExcel_LM = new System.Data.DataTable(); private string MyExcel_Name = ""; private string MyExCEL_User = ""; private string MyExcel_File = ""; private string MyExcel_Cap = ""; /// <summary> /// 构造函数 /// </summary> /// <param name="Cap_s">标题名称</param> /// <param name="MyExcel_Data">数据源</param> /// <param name="MyExcel_LieMing">列名表</param> /// <param name="MyExcel_N">Excel名称</param> /// <param name="MyExcel_Un">操作员名称</param> /// <param name="MyExcel_F">保存路径</param> public XForm_JDT(string Cap_s, System.Data.DataTable MyExcel_Data,System.Data.DataTable MyExcel_LieMing, string MyExcel_N, string MyExcel_Un, string MyExcel_F) { InitializeComponent(); this.groupControl1.Text = Cap_s + "——请稍后胡……"; MyExcel_Cap = this.groupControl1.Text; MyExcel_D = MyExcel_Data; MyExcel_LM = MyExcel_LieMing; MyExcel_Name = MyExcel_N; MyExCEL_User = MyExcel_Un; MyExcel_File = MyExcel_F; this.pBarControl.Properties.Maximum = MyExcel_D.Rows.Count; this.pBarControl.Properties.Minimum = 0; this.groupControl1.Text += " (0/"+MyExcel_D.Rows.Count.ToString()+")"; this.ShowDialog(); if (this.DaoChuExcel()) DevExpress.XtraEditors.XtraMessageBox.Show("成功导出Excel文档!", "提示"); this.Close(); } /// <summary> /// 构造函数 /// </summary> /// <param name="MyExcel_Data">数据源</param> /// <param name="MyExcel_LieMing">列名表</param> /// <param name="MyExcel_N">Excel名称</param> /// <param name="MyExcel_Un">操作员名称</param> /// <param name="MyExcel_F">保存路径</param> /// public XForm_JDT(System.Data.DataTable MyExcel_Data,System.Data.DataTable MyExcel_LieMing, string MyExcel_N, string MyExcel_Un, string MyExcel_F) {//这几个参数,自己可以看着来改吧!我是为了方便自己的程序随便设的! InitializeComponent(); MyExcel_Cap = this.groupControl1.Text; MyExcel_D = MyExcel_Data; MyExcel_LM = MyExcel_LieMing; MyExcel_Name = MyExcel_N; MyExCEL_User = MyExcel_Un; MyExcel_File = MyExcel_F; this.pBarControl.Properties.Maximum = MyExcel_D.Rows.Count; this.pBarControl.Properties.Minimum = 0;//这个是进度条的控件 this.groupControl1.Text += " (0/" + MyExcel_D.Rows.Count.ToString() + ")";//这个是那个框框控件,不知道怎么叫,看名字应该知道了吧! } /// <summary> /// 导出到Excel文档 /// </summary> /// <returns>True-导出成功;False-导出失败</returns> public bool DaoChuExcel() { ApplicationClass MyExcel_App = new ApplicationClass(); if (MyExcel_App == null) { DevExpress.XtraEditors.XtraMessageBox.Show("没能启动Excel程序!请确保你已经Office的相关组件!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } Workbooks MyExcel_Ws = MyExcel_App.Workbooks; Workbook MyExcel_W = MyExcel_Ws.Add(Excel.XlWBATemplate.xlWBATWorksheet); Worksheet MyExcel_S = (Worksheet)MyExcel_W.Worksheets[1]; MyExcel_S.Name = MyExcel_Name; Range MyExcel_R = MyExcel_S.get_Range(MyExcel_S.Cells[1, 1], MyExcel_S.Cells[2, MyExcel_D.Columns.Count]);//这里设置表头标题,位置可以自己改! MyExcel_R.Merge(0); MyExcel_R.HorizontalAlignment = Excel.XlVAlign.xlVAlignCenter; MyExcel_R.VerticalAlignment = Excel.XlVAlign.xlVAlignCenter; MyExcel_R.Value2 = MyExcel_Name; MyExcel_S.Cells[3, 1] = "操作员:" + MyExCEL_User; MyExcel_S.Cells[3, MyExcel_D.Columns.Count] = "导出时间:"+DateTime.Now; for (int a = 0; a < MyExcel_D.Columns.Count; a++) { DataRow[] MyRow_LM = this.MyExcel_LM.Select(this.MyExcel_LM.Columns[0].ColumnName + "='" + MyExcel_D.Columns[a].ColumnName+"'"); MyExcel_S.Cells[4, a + 1] = MyRow_LM[0][1].ToString(); } for (int b = 0; b < MyExcel_D.Rows.Count; b++) { for (int c = 0; c < MyExcel_D.Columns.Count; c++) { MyExcel_S.Cells[b + 5, c + 1] = "'" + MyExcel_D.Rows[b][c]; } if (int.Parse(this.pBarControl.Text) < this.pBarControl.Properties.Maximum) { int LS = int.Parse(this.pBarControl.Text) + 1; this.pBarControl.Text = LS.ToString(); } int Rows_i = b + 1; this.groupControl1.Text = MyExcel_Cap + " (" + Rows_i.ToString()+ "/" + MyExcel_D.Rows.Count.ToString() + ")"; System.Windows.Forms.Application.DoEvents(); } MyExcel_S.Cells.EntireColumn.AutoFit(); try { MyExcel_W.Saved = true; MyExcel_W.SaveCopyAs(MyExcel_File); } catch (Exception Err_E) { DevExpress.XtraEditors.XtraMessageBox.Show("导出错误!/n" + Err_E.Message, "提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return false; } MyExcel_App.Quit(); return true; } } } |