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 Core.Mes.Client.Comm.Tool;
using System.Data.OleDb;
using System.IO;
using Infragistics.Win.UltraWinGrid;
using NPOI.HSSF.UserModel;
using NPOI.SS.UserModel;
using NPOI.XSSF.UserModel;
using System.Threading;
using System.Collections;
using Core.Mes.Client.Comm.Format;
using Core.Mes.Client.Comm.Server;
using com.steering.pss.sale.price.entity;
namespace Core.StlMes.Client.SalePrice.BaseForm
{
public partial class FrmExcelToGrid : FrmBase
{
public FrmExcelToGrid()
{
InitializeComponent();
}
public FrmExcelToGrid(OpeBase ob)
{
InitializeComponent();
this.ob = ob;
}
HSSFWorkbook hssfworkbook; //Office 2003
XSSFWorkbook xssfworkbook; //Office 2007 2010
ISheet sheet = null;
private string saleOrg;
///
/// 销售组织
///
public string SaleOrg
{
get { return saleOrg; }
set { saleOrg = value; }
}
///
/// 打开选择的Excel
///
///
private void InitializeWorkbook(string path)
{
try
{
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
hssfworkbook = new HSSFWorkbook(file);
sheet = hssfworkbook.GetSheetAt(0);
}
}
catch
{
using (FileStream file = new FileStream(path, FileMode.Open, FileAccess.Read))
{
xssfworkbook = new XSSFWorkbook(file);
sheet = xssfworkbook.GetSheetAt(0);
}
}
}
delegate void SetGridCallBack(DataTable dt);
private void SetGrid(DataTable dt)
{
if (ultraGrid1.InvokeRequired)
{
SetGridCallBack sg = new SetGridCallBack(SetGrid);
this.Invoke(sg, new object[] { dt });
}
else
{
ultraGrid1.DataSource = dt;
ultraGrid1.DisplayLayout.Bands[0].Columns["选择"].Header.CheckBoxVisibility = Infragistics.Win.UltraWinGrid.HeaderCheckBoxVisibility.WhenUsingCheckEditor;
ultraGrid1.DisplayLayout.Bands[0].Columns[1].Width = 135;
this.Cursor = Cursors.Default;
}
}
///
/// 将Excel内容转化为DataTable
///
private void ConvertToDataTable()
{
//ISheet sheet = hssfworkbook.GetSheetAt(0);
System.Collections.IEnumerator rows = sheet.GetRowEnumerator();
IRow iRow = sheet.GetRow(0);
short count = iRow.LastCellNum;
//if (count != 5)
//{
// MessageUtil.ShowWarning("导入的Excel列数与模板列数不符!");
// return;
//}
DataTable dt = new DataTable();
for (int j = 0; j < count + 1; j++)
{
if (j == 0) //加一列选择框
{
dt.Columns.Add("选择");
}
else
{
dt.Columns.Add(Convert.ToChar(((int)'A') + j).ToString());
}
}
dt.Columns[0].DefaultValue = "False";
dt.Columns[0].DataType = typeof(Boolean);
while (rows.MoveNext())
{
IRow row = null;
try
{
row = (HSSFRow)rows.Current;
}
catch
{
row = (XSSFRow)rows.Current;
}
DataRow dr = dt.NewRow();
for (int i = 1; i < row.LastCellNum + 1; i++)
{
ICell cell = row.GetCell(i - 1);
if (cell == null)
{
dr[i] = null;
}
else
{
dr[i] = cell.ToString();
}
}
dt.Rows.Add(dr);
}
SetGrid(dt);
}
///
/// 使用系统软件打开模板
///
///
///
private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
string path = "";
path = System.Windows.Forms.Application.StartupPath + "\\PriceTemplate\\价格导出.xls";
try
{
System.Diagnostics.Process.Start(path);
}
catch (Exception ex)
{
MessageUtil.ShowWarning("没有可用的模板!");
}
}
private void ultraToolbarsManager1_ToolClick(object sender, Infragistics.Win.UltraWinToolbars.ToolClickEventArgs e)
{
switch (e.Tool.Key)
{
case "Import":
ImportExcel();
break;
case "Confirm":
ConfirmData();
break;
case "Close":
this.Close();
break;
default:
break;
}
}
private void ImportExcel()
{
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "所有文件|*.xls;*.xlsx|xls文件(*.xls)|*.xls|xlsx文件(*.xlsx)|*.xlsx";
ofd.Multiselect = false;
if (ofd.ShowDialog() == DialogResult.OK)
{
this.Cursor = Cursors.WaitCursor;
string filePath = ofd.FileName;
InitializeWorkbook(filePath);
//ConvertToDataTable();
Thread t = new Thread(new ThreadStart(ConvertToDataTable));
t.Start();
}
}
Dictionary dic = new Dictionary();
Dictionary price = new Dictionary();
///
/// 确认数据
///
private void ConfirmData()
{
ultraGrid1.UpdateData();
int flag = 0;
ArrayList parm = new ArrayList();
ArrayList parm_price = new ArrayList();
SlmPriceBasepriceLineEntity sop = new SlmPriceBasepriceLineEntity();
foreach (UltraGridRow row in ultraGrid1.Rows)
{
if (row.Cells["选择"].Value.ToString().ToUpper() == "TRUE")
{
flag += 1;
// sop.PriceLineId = row.Cells[1].Value.ToString();
sop.PriceHeadId = row.Cells[1].Value.ToString();
sop.FrameId = "A000001";
sop.WaijingBegin =Decimal.Parse(row.Cells[2].Value.ToString());
sop.WaijingEnd= Decimal.Parse(row.Cells[3].Value.ToString());
sop.BihouBegin = Decimal.Parse(row.Cells[4].Value.ToString());
sop.BihouEnd = Decimal.Parse(row.Cells[5].Value.ToString());
// sop.Specificion = row.Cells[6].Value.ToString();
if (row.Cells[7].Value.ToString().Trim()=="吨")
{
sop.PriceUnit="121503";
}
if (row.Cells[7].Value.ToString().Trim() == "支")
{
sop.PriceUnit = "121501";
}
if (row.Cells[7].Value.ToString().Trim() == "米")
{
sop.PriceUnit = "121502";
}
if (row.Cells[7].Value.ToString().Trim() == "英镑")
{
sop.PriceUnit = "121504";
}
if (row.Cells[7].Value.ToString().Trim() == "英尺")
{
sop.PriceUnit = "121505";
}
sop.PriceNum = Decimal.Parse(row.Cells[8].Value.ToString());
// sop.Validflag ="1";
sop.CreateName = UserInfo.GetUserName();
if (row.Cells[2].Value.ToString() == "" || row.Cells[3].Value.ToString() == "" || row.Cells[4].Value.ToString() == "" || row.Cells[5].Value.ToString() == "")
{
MessageUtil.ShowWarning("外径壁厚范围不能为空!");
return;
}
else
{
if (!StringUtil.IsNumber(row.Cells[2].Value.ToString()) || !StringUtil.IsNumber(row.Cells[3].Value.ToString()) || !StringUtil.IsNumber(row.Cells[4].Value.ToString()) || !StringUtil.IsNumber(row.Cells[5].Value.ToString()))
{
MessageUtil.ShowWarning("外径壁厚范围必须为数字!");
return;
}
}
parm_price.Add(JSONFormat.Format(sop));
}
}
if (flag == 0)
{
MessageUtil.ShowWarning("请勾选或者拖选您要确认的数据!");
return;
}
if (MessageUtil.ShowYesNoAndQuestion("是否确认导入数据!") == DialogResult.No) return;
int i = ServerHelper.SetData("com.steering.pss.sale.price.server.CorePriceFramePrice.save",
new object[] { parm, parm_price }, this.ob);
if (i > 0)
{
MessageUtil.ShowTips("数据保存成功!");
}
else
{
MessageUtil.ShowTips("数据保存失败!");
}
}
private void ultraGrid1_AfterSelectChange(object sender, Infragistics.Win.UltraWinGrid.AfterSelectChangeEventArgs e)
{
foreach (UltraGridRow uRow in ultraGrid1.Selected.Rows)
{
if (uRow.GetType() != typeof(Infragistics.Win.UltraWinGrid.UltraGridGroupByRow))
{
uRow.Cells["选择"].Value = true;
}
}
}
}
}