private void btnProduce_Click(object sender, EventArgs e) { if (CheckSure()) { List <DataTable> orderList = new List <DataTable>(); List <Hashtable> hashTable = new List <Hashtable>(); DataTable dt = new DataTable(); string[] a = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N" }; dt.Columns.Add("NO"); dt.Columns.Add("SLIPTYPE"); dt.Columns.Add("X_1"); dt.Columns.Add("X_2"); dt.Columns.Add("SLIPNUMBER"); dt.Columns.Add("CUSTOMER"); dt.Columns.Add("DATE"); dt.Columns.Add("MEMO"); //dt.Columns.Add("QUANTITY"); int i = 1; foreach (DataGridViewRow dgvr in dgvData.Rows) { if (Convert.ToBoolean(dgvr.Cells["CHECK"].Value)) { orderTable = bOrderHeader.GetModel(CConvert.ToString(dgvr.Cells["SLIP_NUMBER"].Value)); if (orderTable != null) { DataRow row = dt.NewRow(); row["NO"] = i; row["SLIPTYPE"] = bCommon.GetBaseMaster("SLIP_TYPE", orderTable.SLIP_TYPE).Name; row["SLIPNUMBER"] = orderTable.SLIP_NUMBER; row["CUSTOMER"] = orderTable.ENDER_CUSTOMER_NAME; row["DATE"] = orderTable.DUE_DATE; row["MEMO"] = orderTable.MEMO; //row["QUANTITY"]= orderTable. dt.Rows.Add(row); DataTable dt2 = new DataTable(); dt2.Columns.Add("NO"); dt2.Columns.Add("PRODUCT_NAME"); dt2.Columns.Add("X_1"); dt2.Columns.Add("X_2"); dt2.Columns.Add("QUANTITY"); dt2.Columns.Add("X_3"); dt2.Columns.Add("X_4"); dt2.Columns.Add("X_5"); dt2.Columns.Add("X_6"); dt2.Columns.Add("X_7"); dt2.Columns.Add("X_8"); dt2.Columns.Add("MEMO"); int j = 1; foreach (BllOrderLineTable line in orderTable.Items) { DataRow dr = dt2.NewRow(); dr["NO"] = j++; dr["PRODUCT_NAME"] = line.PRODUCT_NAME; dr["QUANTITY"] = (int)line.QUANTITY / orderTable.QUANTITY; dr["MEMO"] = line.MEMO; dt2.Rows.Add(dr); } orderList.Add(dt2); Hashtable ht = new Hashtable(); ht.Add("&SLIP_TYPE", bCommon.GetBaseMaster("SLIP_TYPE", orderTable.SLIP_TYPE).Name); ht.Add("&QUANTITY", ((int)orderTable.QUANTITY).ToString() + "套"); //ht.Add("&YEAR", CConvert.ToDateTime(orderTable.SLIP_DATE).ToString("yyyy")); //ht.Add("&MONTH", CConvert.ToDateTime(orderTable.SLIP_DATE).ToString("MM")); ht.Add("&NAME", "生产通知单" + a[i - 1]); ht.Add("&PONUMBER", orderTable.CUSTOMER_PO_NUMBER); ht.Add("&DUEDATE", CConvert.ToDateTime(orderTable.DUE_DATE).ToString("yyyy") + "月" + CConvert.ToDateTime(orderTable.DUE_DATE).ToString("MM") + "日"); ht.Add("&SLIPNUMBER", orderTable.SLIP_NUMBER); ht.Add("&CUSTOMER", orderTable.ENDER_CUSTOMER_NAME); hashTable.Add(ht); i++; } } } if (dt.Rows.Count > 0) { SaveFileDialog sf = new SaveFileDialog(); sf.FileName = "HD_PRODUCTION_ORDERS_" + DateTime.Now.ToString("yyyyMMddhhmmss") + ".xls"; sf.Filter = "(文件)|*.xls;*.xlsx"; if (sf.ShowDialog(this) == DialogResult.OK) { if (dt.Rows.Count > 0) { int ret = CExport.DataTableToExcel_Production_Orders(@"rpt\HD_PRODUCTION_ORDERS.xls", sf.FileName, dt, orderList, hashTable); if (CConstant.EXPORT_FAILURE.Equals(ret)) { MessageBox.Show("导出失败。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (CConstant.EXPORT_SUCCESS.Equals(ret)) { MessageBox.Show("导出成功。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } else if (CConstant.EXPORT_RUNNING.Equals(ret)) { MessageBox.Show("文件正在运行,重新生成文件失败。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } else if (CConstant.EXPORT_TEMPLETE_FILE_NOT_EXIST.Equals(ret)) { MessageBox.Show("模版文件不存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } else { MessageBox.Show("明细信息不存在。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } } else { MessageBox.Show("请先选择一张订单。", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Information); } } }