| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413 |
- 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 Infragistics.Win.UltraWinGrid;
- using System.IO;
- using System.Data.OleDb; //连接Access数据库
- using ADOX;
- using System.Reflection;
- using System.Threading;
- using Infragistics.Win;
- namespace CreateAccess
- {
- public partial class frmExcelImpl : Form
- {
- ServiceReference1.WebServerClient webServer = new ServiceReference1.WebServerClient();
- public frmExcelImpl()
- {
- InitializeComponent();
- }
- private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
- {
- switch (e.Tool.Key)
- {
- case "btnQuery":
- {
- btnQuery();
- break;
- }
- case "btnImpl":
- {
- openFileDialog1.Filter = "excel文件|*.xls;*.xlsx";//只允许mdb文件
- openFileDialog1.Title = "选择要导入的Excel文件"; //弹出框头部显示
- openFileDialog1.AddExtension = true; //自动增加后缀
- openFileDialog1.AutoUpgradeEnabled = true; //是否随系统自动升级弹出窗口样式
- openFileDialog1.InitialDirectory = Application.StartupPath;//默认打开当前目录
- if (openFileDialog1.ShowDialog() == DialogResult.OK)
- {
- btnImpl(openFileDialog1.FileName);
- };
- break;
- }
- default: break;
- }
- }
- private void btnImpl(string fileName)
- {
- DataTable dt1 = null;
- DataTable dt2 = null;
- try
- {
- //Excel.Range oRow = (Excel.Range)_WorkSheet.Cells[row, 1];
- //oRow.EntireRow.Delete(Missing.Value);
- //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串) //备注: "HDR=yes;"是说Excel文件的第一行是列名而不是数据,"HDR=No;"正好与前面的相反
- string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + fileName + ";Extended Properties='Excel 12.0; HDR=Yes; IMEX=1'";
- //string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + fileName + ";" + "Extended Properties=Excel 8.0;";
- using (OleDbConnection conn = new OleDbConnection(strConn))
- {
- conn.Open();
- System.Data.DataTable sheetDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
- DataTable dt = sheetDt;
- string[] sheet = new string[sheetDt.Rows.Count];
- for (int m = 0; m < sheetDt.Rows.Count; m++)
- {
- sheet[m] = sheetDt.Rows[m]["TABLE_NAME"].ToString();
- }
- string strExcel = string.Format("select * from [{0}]", sheet[0]);
- OleDbDataAdapter myCommand = new OleDbDataAdapter(strExcel, strConn);
- dt1 = new System.Data.DataTable();
- myCommand.Fill(dt1);
- strExcel = string.Format("select * from [{0}A2:M{1}]", sheet[0], dt1.Rows.Count + 1);
- myCommand = new OleDbDataAdapter(strExcel, strConn);
- dt2 = new System.Data.DataTable();
- myCommand.Fill(dt2);
- conn.Close();
- ServiceReference1.meterWorkStorageActual[] lm = new ServiceReference1.meterWorkStorageActual[dt2.Rows.Count];
- string preNo = DateTime.Now.ToString("yyyyMMddHHmmssfff");
- int i = 0;
- foreach (DataRow dr in dt2.Rows)
- {
- lm[i++] = new ServiceReference1.meterWorkStorageActual
- {
- predictionNo = preNo,
- batchNo = dr["批号"].ToString().Trim(),
- valueFlag = dr["无效"].ToString().Trim() == "FALSE" ? "1" : "0",
- checkFlag = "0",
- //createManNo = dr["计量员编号"].ToString().Trim(),
- createManName = dr["计量员"].ToString().Trim(),
- createTime = Convert.ToDateTime(dr["日期"].ToString().Trim()),
- createTimeSpecified = true,
- //productNo = "",s
- productName = dr["品名"].ToString().Trim(),
- //gradeNo = "",
- gradeName = dr["牌号"].ToString().Trim(),
- //standardNo = "",
- standardName = dr["标准"].ToString().Trim(),
- packageNo = dr["包号"].ToString().Trim(),
- blockNum = dr["片数"].ToString().Trim(),
- productDate = Convert.ToDateTime(dr["日期"].ToString().Trim()),
- productDateSpecified = true,
- //grossWeight = Convert.ToDecimal(dr["毛重"].ToString().Trim()),
- //grossWeightSpecified = true,
- //tareWeight = Convert.ToDecimal(dr["毛重"].ToString().Trim()) - Convert.ToDecimal(dr["主称净重"].ToString().Trim()),
- //tareWeightSpecified = true,
- netWeight = Convert.ToDecimal(dr["主秤净重"].ToString().Trim()),
- netWeightSpecified = true,
- baseSpotNo = "001034004",
- baseSpotName = "镍旧",
- memo = dr["二维码"].ToString().Trim(),
- actualWeight = Convert.ToDecimal(dr["主秤净重"].ToString().Trim()),
- actualWeightSpecified = true,
- referWeight = Convert.ToDecimal(dr["副秤净重"].ToString().Trim()),
- referWeightSpecified = true,
- deleteManName = dr["最终修改人"].ToString().Trim()
- };
- }
- if (lm.Length > 0)
- {
- ServiceReference1.resTfulResult res = webServer.doAccessCuImpl(lm);
- if (res.succeed)
- {
- MessageBox.Show("导入完成");
- btnQuery();
- }
- else
- {
- MessageBox.Show("部分数据导入失败");
- }
- }
- }
- }
- catch (Exception ex)
- {
- MessageBox.Show("导入失败:" + ex.Message);
- System.GC.Collect();
- }
- }
- private void btnQuery()
- {
- try
- {
- if (DateTime.Compare(dtStartTime.Value, dtEndTime.Value) > 0)
- {
- MessageBox.Show("开始时间不能大于结束时间");
- return;
- }
- if ((dtEndTime.Value - dtStartTime.Value).Days > 7)
- {
- MessageBox.Show("时间跨度不能大于7天");
- return;
- }
- ServiceReference1.commonPage cp = new ServiceReference1.commonPage();
- cp.startTime = dtStartTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- cp.endTime = dtEndTime.Value.ToString("yyyy-MM-dd HH:mm:ss");
- cp.param = new ServiceReference1.meterWorkStorageActual { valueFlag = "1", baseSpotNo = cmbPoint.Value?.ToString(), productNo = cmbMatterNo.Text.Trim() };
- ServiceReference1.meterWorkStorageActual[] ls = webServer.doQueryTimeWf(cp);
- DataTable dt = this.dataTable1.Clone();
- if (ls != null && ls.Length > 0)
- {
- dt = ListToDataTable<ServiceReference1.meterWorkStorageActual>(ls);
- }
- CopyDataToDatatable(ref dt, ref this.dataTable1, true);
- RefreshAndAutoSize(ultraGridSj);
- }
- catch (Exception ex)
- {
- MessageBox.Show("查询异常:" + ex.Message);
- }
- }
- #region 控件数据设置
- public void RefreshAndAutoSize(UltraGrid ultraGrid)
- {
- try
- {
- ultraGrid.BeginUpdate();
- foreach (UltraGridBand band in ultraGrid.DisplayLayout.Bands)
- {
- foreach (UltraGridColumn column in band.Columns)
- {
- column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand, band.ColHeadersVisible ? true : false);
- }
- }
- }
- catch { }
- ultraGrid.EndUpdate();
- }
- public void CopyDataToDatatable(ref DataTable src, ref DataTable dest, bool ClearExists)
- {
- if (src == null)
- {
- dest = null;
- return;
- }
- if (dest == null)
- {
- dest = new DataTable();
- }
- if (ClearExists)
- {
- if (dest != null) dest.Rows.Clear();
- }
- DataRow CurRow, NewRow;
- if (src.Rows.Count > 0)
- for (int i = 0; i < src.Rows.Count; i++)
- {
- CurRow = src.Rows[i];
- NewRow = dest.NewRow();
- for (int j = 0; j < src.Columns.Count; j++)
- {
- try
- {
- if (dest.Columns.Contains(src.Columns[j].ColumnName))
- {
- NewRow[src.Columns[j].ColumnName] = CurRow[j];
- }
- }
- catch { }
- }
- dest.Rows.Add(NewRow);
- }
- dest.AcceptChanges();
- }
- public void SetUltraGridRowFilter(ref UltraGrid myGrid1, bool bAllowFilter)
- {
- try
- {
- if (bAllowFilter)
- {
- if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.FilterRow)
- myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.FilterRow;
- for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
- {
- for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
- {
- try
- {
- if (!myGrid1.DisplayLayout.Bands[i].Columns[j].Hidden && myGrid1.DisplayLayout.Bands[i].Columns[j].RowLayoutColumnInfo.LabelPosition != LabelPosition.LabelOnly)
- {
- //string sKey = myGrid1.DisplayLayout.Bands[i].Columns[j].Key; //UNCK UNCH
- myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.True;
- }
- }
- catch { }
- }
- }
- }
- else
- {
- if (myGrid1.DisplayLayout.Override.FilterUIType != FilterUIType.HeaderIcons)
- myGrid1.DisplayLayout.Override.FilterUIType = FilterUIType.HeaderIcons;
- for (int i = 0; i < myGrid1.DisplayLayout.Bands.Count; i++)
- {
- try
- {
- myGrid1.DisplayLayout.Bands[i].ColumnFilters.ClearAllFilters();
- }
- catch { }
- for (int j = 0; j < myGrid1.DisplayLayout.Bands[i].Columns.Count; j++)
- {
- try
- {
- myGrid1.DisplayLayout.Bands[i].Columns[j].AllowRowFiltering = Infragistics.Win.DefaultableBoolean.False;
- }
- catch { }
- }
- }
- }
- }
- catch { }
- }
- public void SetUltraComboDataSource(UltraCombo cmb, DataTable table, string ColumnValue, string ColumnDisplay)
- {
- if (table == null || !table.Columns.Contains(ColumnValue) || !table.Columns.Contains(ColumnDisplay)) return;
- try
- {
- if (cmb != null)
- {
- cmb.DataSource = table;
- cmb.DisplayLayout.Override.TipStyleScroll = TipStyle.Hide;
- cmb.DisplayLayout.Override.BorderStyleCell = UIElementBorderStyle.None;
- cmb.DisplayLayout.Override.BorderStyleRow = UIElementBorderStyle.None;
- cmb.DisplayLayout.Override.SelectTypeRow = SelectType.Single;
- cmb.DisplayLayout.Override.HeaderStyle = HeaderStyle.Standard;
- cmb.DisplayLayout.Override.HeaderAppearance.TextHAlign = HAlign.Center;
- cmb.DisplayLayout.Override.RowAppearance.TextVAlign = VAlign.Middle;
- cmb.DisplayLayout.Override.ActiveRowAppearance.BackColor = Color.FromArgb(51, 153, 255);
- cmb.DisplayLayout.Override.ActiveRowAppearance.ForeColor = Color.FromArgb(255, 255, 255);
- cmb.DisplayLayout.Override.SelectedRowAppearance.BackColor = Color.FromArgb(51, 153, 255);
- cmb.DisplayLayout.Override.SelectedRowAppearance.ForeColor = Color.FromArgb(255, 255, 255);
- //cmb.DisplayLayout.Override.ActiveRowAppearance.FontData.Bold = DefaultableBoolean.True;
- foreach (UltraGridBand band in cmb.DisplayLayout.Bands)
- {
- band.ColHeadersVisible = false;
- foreach (UltraGridColumn column in band.Columns)
- {
- if (!column.Key.Equals(ColumnDisplay)) column.Hidden = true;
- column.Width = cmb.Width;
- //column.PerformAutoResize(PerformAutoSizeType.AllRowsInBand);
- }
- }
- cmb.ValueMember = ColumnValue;
- cmb.DisplayMember = ColumnDisplay;
- cmb.DropDownWidth = -1;
- }
- }
- catch { }
- }
- public DataTable ListToDataTable<T>(T[] items)
- {
- DataTable dataTable = new DataTable();
- PropertyInfo[] Props = typeof(T).GetProperties(BindingFlags.Public | BindingFlags.Instance);
- foreach (PropertyInfo prop in Props)
- {
- dataTable.Columns.Add(prop.Name);
- }
- foreach (T obj in items)
- {
- var values = new object[Props.Length];
- for (int i = 0; i < Props.Length; i++)
- {
- values[i] = Props[i].GetValue(obj, null);
- }
- dataTable.Rows.Add(values);
- }
- return dataTable;
- }
- #endregion
- private void frmExcelImpl_Load(object sender, EventArgs e)
- {
- dtStartTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 00:00:00"));
- dtEndTime.Value = Convert.ToDateTime((DateTime.Now.ToString("yyyy-MM-dd") + " 23:59:59"));
- SetUltraGridRowFilter(ref ultraGridSj, true);
- #region
- /*
- ServiceReference1.comBaseInfo cp = new ServiceReference1.comBaseInfo();
- cp.validFlag = "1";
- cp.pBaseCode = "001025";
- ServiceReference1.comBaseInfo[] ls = webServer.doQueryComBaseInfoWf(cp);
- if (ls != null && ls.Length > 0)
- {
- SetUltraComboDataSource(cmbMatterNo, ListToDataTable<ServiceReference1.comBaseInfo>(ls), "baseCode", "baseName");
- }
- else
- {
- MessageBox.Show("产品信息载入失败");
- return;
- }
- //*/
- ServiceReference1.comBaseInfo co = new ServiceReference1.comBaseInfo();
- co.validFlag = "1";
- co.pBaseCode = "001034";
- ServiceReference1.comBaseInfo[] lo = webServer.doQueryComBaseInfoWf(co);
- if (lo != null && lo.Length > 0)
- {
- SetUltraComboDataSource(cmbPoint, ListToDataTable<ServiceReference1.comBaseInfo>(lo), "baseCode", "baseName");
- }
- else
- {
- MessageBox.Show("计量点载入失败");
- return;
- }
- #endregion
- }
- }
- }
|