using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using CoreFS.CA06;
using System.Collections;
using System.Reflection;
using Excel1 = Microsoft.Office.Interop.Excel;
using Infragistics.Win.UltraWinGrid;
using System.Runtime.InteropServices;
namespace Core.LZMes.Client.UIK
{
public partial class StorageStandbyWGJ : FrmBase
{
//记录前一次入库垛位
internal string before_yard = "1-01A-01";
public StorageStandbyWGJ()
{
InitializeComponent();
}
public override void ToolBar_Click(object sender, string ToolbarKey)
{
switch (ToolbarKey)
{
case "Query":
this.DoQuery();
break;
case "Export":
this.DoExport();
break;
}
}
private void DoQuery()
{
try
{
string starttiem = this.ultraDateTimeEditor5.Value != null ? this.ultraDateTimeEditor5.DateTime.ToString("yyyyMMdd") : "";//出库时间
string endtime = this.ultraDateTimeEditor4.Value != null ? this.ultraDateTimeEditor4.DateTime.ToString("yyyyMMdd") : "";//出库时间
bool flag = false;
this.dataSet1.Tables[0].Clear();
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIB.COM.ComDBQuery";
ccp.MethodName = "doSimpleQuery";
ArrayList paramArray = new ArrayList();
paramArray.Add("UIK050010_06.SELECT");
paramArray.Add(starttiem);
paramArray.Add(endtime);
ccp.ServerParams = new object[] { paramArray };
ccp.SourceDataTable = this.dataSet1.Tables[0];
this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
System.Diagnostics.Debug.WriteLine(this.dataSet1.Tables[0].ToString());
DataRowCollection drs1 = dataSet1.Tables[0].Rows;
if (drs1.Count <= 0)
{
MessageBox.Show("该时间内没有入库待机钢卷");
}
}
catch (Exception EX)
{
MessageBox.Show(EX.ToString());
}
}
///
/// 导出
///
private void DoExport()
{
try
{
//if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
//{
// string fileName = this.saveFileDialog1.FileName;
// ultraGridExcelExporter1.Export(ultraGrid1, fileName);
// System.Diagnostics.Process.Start(fileName);
//}
this.DataTabletoExcelULTRA(ultraGrid1);
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
private void StorageStandbyWGJ_Load(object sender, EventArgs e)
{
this.ultraCheckEditor1.Checked = true;
this.ultraCheckEditor1.Checked = false ;
}
private void ultraCheckEditor1_CheckedChanged(object sender, EventArgs e)
{
/*if (this.ultraCheckEditor1.Checked == true)
{
this.ultraCalendarSTRATTIME.Enabled = false;
this.ultraCalendarENDTIME.Enabled = false;
}*/
/*if (this.ultraCheckEditor1.Checked == false)
{
this.ultraCalendarENDTIME.Enabled = true;
this.ultraCalendarSTRATTIME.Enabled = true;
}*/
}
private void ultraGrid1_DoubleClickRow(object sender, Infragistics.Win.UltraWinGrid.DoubleClickRowEventArgs e)
{
Infragistics.Win.UltraWinGrid.UltraGridRow uRow = ultraGrid1.ActiveRow;
String coilNo = uRow.Cells["OLD_SAMPL_NO"].Value.ToString();
String curProgCd = "PRC";
this.textBox1.Text = coilNo;
string entryShift = this.UserInfo.GetUserOrder();//入库班次
string entryGroup = this.UserInfo.GetUserGroup();//入库班组
string entryDtime = this.ultraDateTimeEditor1.DateTime.ToString("yyyyMMddHHmmss");//入库时间
string reg_id = this.UserInfo.GetUserID();//操作人
StorageStandby_Sub dlg = new StorageStandby_Sub(this, 1);
if (DialogResult.OK == dlg.ShowDialog(this))
{
//string yardAddr = this.textBox3.Text.ToString().Trim();//垛位
//if (yardAddr == "" && yardAddr.Length != 13)
//{
// MessageBox.Show("垛位输入有误!");
// return;
//}
//string[] tmpArray = yardAddr.Split('-');
string yardAddr = dlg.YARD_ADDR.ToUpper();//垛位
string[] tmpArray = yardAddr.Split('-');
try
{
if (tmpArray[1].Length < 3)
{
tmpArray[1] = "0" + tmpArray[1];
}
if (tmpArray[2].Length < 2)
{
tmpArray[2] = "0" + tmpArray[2];
}
if (Convert.ToInt32(tmpArray[0]) != 1)
{
MessageBox.Show("垛位输入有误,请重新输入!");
return;
}
//if (tmpArray[1] > "17A")
//{
// MessageBox.Show("垛位输入有误,请重新输入!");
// return;
//}
if (Convert.ToInt32(tmpArray[2]) > 69)
{
MessageBox.Show("垛位行数不能超过69,请重新输入!");
return;
}
if (Convert.ToInt32(tmpArray[1].Substring(0, 2)) > 17)
{
MessageBox.Show("垛位列数不能超过17,请重新输入!");
return;
}
if ((tmpArray[1].Substring(2, 1)) != "A")
{
MessageBox.Show("垛位格式不对,请重新输入!");
return;
}
yardAddr = tmpArray[0] + "-" + tmpArray[1] + "-" + tmpArray[2];
}
catch (Exception ex)
{
MessageBox.Show("垛位信息错误!");
return;
}
DataTable dt = new DataTable();
CoreClientParam ccpx = new CoreClientParam();
ccpx.ServerName = "UIM.UIM010040";
ccpx.MethodName = "SelectCoilYard";
ccpx.ServerParams = new object[] { yardAddr };
ccpx.SourceDataTable = dt;
this.ExecuteQueryToDataTable(ccpx, CoreInvokeType.Internal);
if (dt.Rows.Count <= 0)
{
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010040";
ccp.MethodName = "saveCoilYard";
ccp.ServerParams = new object[] { coilNo, yardAddr, entryShift, entryGroup, entryDtime, reg_id, curProgCd };
ccp = this.ExecuteNonQuery(ccp, CoreInvokeType.Internal);
if (ccp.ReturnCode != 0)
{
return;
}
else
{
MessageBox.Show("入库成功!");
}
this.DoQuery();
}
else
{
MessageBox.Show("该位置上已经有了钢卷,请重新输入!");
return;
}
}
else
{
return;
}
}
///
/// 查询区域中一行的垛位信息
///
///
///
///
internal void queryYardRows(int areaType, int areaNo, string yardCol)
{
this.dataSet3.Tables[0].Clear();
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010070";
ccp.MethodName = "queryYardRows";
ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
ccp.SourceDataTable = this.dataSet3.Tables[0];
this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
}
///
/// 查询区域中一行的垛位中钢卷信息
///
///
///
///
internal void queryYardRowCoils(int areaType, int areaNo, string yardCol)
{
this.dataSet2.Tables[0].Clear();
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010070";
ccp.MethodName = "queryYardRowCoils";
ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
ccp.SourceDataTable = this.dataSet2.Tables[0];
this.ExecuteQueryToDataTable(ccp, CoreInvokeType.Internal);
}
internal int queryMinYardRow(int areaType, int areaNo, string yardCol)
{
int minRow = 1;
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010070";
ccp.MethodName = "queryMinYardRow";
ccp.ServerParams = new object[] { areaType, areaNo, yardCol };
ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
if (ccp.ReturnObject != null)
{
minRow = int.Parse(ccp.ReturnObject.ToString());
}
return minRow;
}
///
/// 查询库存区域
///
///
///
internal ArrayList queryYardAreas(int areaType)
{
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010040";
ccp.MethodName = "queryYardAreas";
ccp.ServerParams = new object[] { areaType };
ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
ArrayList retList = (ArrayList)ccp.ReturnObject;
return retList;
}
///
/// 查询库存区分
///
///
///
internal ArrayList queryYardColsByArea(int areaNo)
{
CoreClientParam ccp = new CoreClientParam();
ccp.ServerName = "UIM.UIM010040";
ccp.MethodName = "queryYardColsByArea";
ccp.ServerParams = new object[] { areaNo };
ccp = this.ExecuteQuery(ccp, CoreInvokeType.Internal);
ArrayList retList = (ArrayList)ccp.ReturnObject;
return retList;
}
public void DataTabletoExcelULTRA(UltraGrid tmpDataTable)
{
string fileName = saveFileDialog1.FileName;
string FileName;
saveFileDialog1.FileName = "入库待机钢卷";
saveFileDialog1.DefaultExt = ".xls";
saveFileDialog1.Filter = "excel文件(*.xls)|*.xls|所有文件(*.*)|*.*";
if (this.saveFileDialog1.ShowDialog(this) == DialogResult.OK)
{
fileName = saveFileDialog1.FileName;
FileName = fileName;
}
else
{
return;
}
string FilePath = saveFileDialog1.FileName;
int rowNum = tmpDataTable.Rows.Count;
//页面显示的列数
int columnNum = tmpDataTable.DisplayLayout.Bands[0].Columns.BoundColumnsCount;
int rowIndex = 1;
int columnIndex = 0;
Excel1.Application xlApp = new Excel1.ApplicationClass();
//Microsoft.Office.Interop.Excel.Application xlApp;
//xlApp = new Microsoft.Office.Interop.Excel.Application();
xlApp.DefaultFilePath = "";
xlApp.DisplayAlerts = false;
xlApp.SheetsInNewWorkbook = 1;
Excel1._Workbook xlBook = (Excel1._Workbook)(xlApp.Workbooks.Add(Missing.Value));//添加新工作簿
Excel1.Worksheet ws = (Excel1.Worksheet)xlBook.Worksheets[1];
//int colnum = tmpDataTable.DisplayLayout.Bands[0].Columns.Count;
Excel1.Range r = ws.get_Range("A1", NumToExeclRowStr(columnNum) + "1");
// Excel1.Range r = ws.get_Range("A1", "AA1");
object[] objHeader = new object[columnNum];
//将DataTable的列名导入Excel表第一行
foreach (UltraGridColumn dc in tmpDataTable.DisplayLayout.Bands[0].Columns)
{
objHeader[columnIndex] = dc.Header.Caption;
columnIndex++;
if (columnIndex == columnNum) break;
}
r.Value2 = objHeader;
//设置第一行表头格式
//r = xlApp.get_Range(xlApp.Cells[1, 1], xlApp.Cells[1, columnNum]);
//设置 域 Range 的颜色
r.Interior.ColorIndex = 17;
r.Font.Size = 9;
// r.get_Characters(0, s1.Length).Font.Size = 20;
r.RowHeight = 30;
r.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
//r.Font.Name = "隶书";
//r.Font.Color = clBlue;
//r.Font.Bold = true;
r.Borders.LineStyle = Excel1.XlLineStyle.xlContinuous;
//r.Font.UnderLine = True;
//将DataTable中的数据导入Excel中
for (int i = 0; i < rowNum; i++)
{
rowIndex++;
columnIndex = 0;
for (int j = 0; j < columnNum; j++)
{
//若为订单号 加个单引号转换数据为文本格式
if (columnIndex == 3 || columnIndex == 4)
{
objHeader[columnIndex] = "'" + tmpDataTable.Rows[i].Cells[j].Text.ToString();
}
else
{
objHeader[columnIndex] = tmpDataTable.Rows[i].Cells[j].Text.ToString();
}
columnIndex++;
}
r = ws.get_Range("A" + (i + 2), NumToExeclRowStr(columnNum) + (i + 2));
r.Value2 = objHeader;
r.Borders.LineStyle = Excel1.XlLineStyle.xlContinuous;
r.Font.Size = 9;
}
//将合同号的数据转换为excel中的数字格式,否则为科学计数法格式
//Excel1.Range RMXNEW;
//string Inf0 = "";
//Inf0 = "Z1:" + "Z2";
//RMXNEW = ws.get_Range(Inf0, Type.Missing);
//RMXNEW.EntireColumn.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
////格式化表格数据0为纯数字,@为文本 "yyyy-mm-dd" General
//RMXNEW.EntireColumn.NumberFormat = "@";
//Excel1.Range RMXNEW1;
//string Inf1 = "";
//Inf1 = "Y1:" + "Y2";
//RMXNEW1 = ws.get_Range(Inf1, Type.Missing);
//RMXNEW1.EntireColumn.HorizontalAlignment = Excel1.XlHAlign.xlHAlignCenter;
//RMXNEW1.EntireColumn.NumberFormat = "yyyy-mm-dd";
////导出到EXCEL中 只需要某些列,下面删除多余的列(已经在datatable中按字段排好序)
//Excel1.Range RMX1;
//string Inf1 = "";
//Inf1 = "A1:" + "W1";
//RMX1 = ws.get_Range(Inf1, Type.Missing);
//RMX1.EntireColumn.Delete(0);
r.EntireColumn.AutoFit(); //自适应宽度
//Excel1.Borders pborders = r.Borders;
//设置边框
//r.BorderAround(XlLineStyle.xlContinuous, XlBorderWeight.xlMedium, XlColorIndex.xlColorIndexAutomatic, System.Drawing.Color.Black.ToArgb());
//r.Borders.get_Item(XlBordersIndex.xlEdgeBottom).Weight = XlBorderWeight.xlMedium;
//r.WrapText = true;
xlBook.SaveCopyAs(FilePath);
this.KillSpecialExcel(xlApp);
MessageBox.Show("数据已经成功导出到:" + saveFileDialog1.FileName.ToString(),
"导出完成", MessageBoxButtons.OK, MessageBoxIcon.Information);
System.Diagnostics.Process.Start(fileName);
}
private string NumTochr(int Num)
{
int n = 64 + Num;
return "" + (Char)n;
}
private string NumToExeclRowStr(int Num)
{
int X, Y;
if (Num < 27)
{
return NumTochr(Num);
}
X = Num / 26;
Y = Num - X * 26;
return NumTochr(X) + NumTochr(Y);
}
#region 结束EXCEL.EXE进程的方法
///
/// 结束EXCEL.EXE进程的方法
///
/// EXCEL对象
[DllImport("user32.dll", SetLastError = true)]
static extern int GetWindowThreadProcessId(IntPtr hWnd, out int lpdwProcessId);
public void KillSpecialExcel(Microsoft.Office.Interop.Excel.Application m_objExcel)
{
try
{
if (m_objExcel != null)
{
int lpdwProcessId;
GetWindowThreadProcessId(new IntPtr(m_objExcel.Hwnd), out lpdwProcessId);
System.Diagnostics.Process.GetProcessById(lpdwProcessId).Kill();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
#endregion
}
}