예제 #1
0
        /// <summary>
        /// 打开Excel编辑
        /// </summary>
        /// <returns></returns>
        public string OpenExcel()
        {
            //在打开Excel前,先要把正在运行的Excel进程给杀掉
            //killExcelProcess();

            string filePath = generateTempXlsFilePath();

            formatDataSourceToExcel(_ConvertedDataSource.Tables[0]);
            List <T> dataSource = new List <T>();

            MB.Util.MyConvert.ConvertDataSetToEntity <T>(_ConvertedDataSource, dataSource, null);
            hashDataSource(dataSource);
            if (_EditColumns != null && _EditColumns.Count > 0)
            {
                convertLookUpEditValueToText(_ConvertedDataSource.Tables[0]);
            }

            sortByColumnSetting(_ConvertedDataSource.Tables[0]);

            ExcelEditHelper excelEditHelper = new ExcelEditHelper(filePath);

            excelEditHelper.LoadDataAsExcel(_MainKeys, _ConvertedDataSource.Tables[0]);
            _ExcelFilePath = filePath;
            return(filePath);
        }
예제 #2
0
        /// <summary>
        /// 得到要提交的excel数据的哈希
        /// 对于新的数据,直接放在新的集合对象中
        /// 其他数据,放在hash表中与编辑前的数据做对比
        /// </summary>
        private void getSubmittedDataFromExcel()
        {
            DataSet dsData = MB.WinBase.LayoutXmlConfigHelper.Instance.CreateNULLDataByFieldPropertys(_Columns);

            if (dsData.Tables != null && dsData.Tables.Count > 0)
            {
                //如果数据源结构中没有主键,则把主键添加进去
                int keyColumnIndex = 0;
                foreach (string mainKeyColumn in _MainKeys)
                {
                    if (!dsData.Tables[0].Columns.Contains(mainKeyColumn))
                    {
                        var        colInfo = _Columns[mainKeyColumn];
                        DataColumn newCol  = new DataColumn(mainKeyColumn, MB.Util.General.CreateSystemType(colInfo.DataType, false));
                        newCol.Caption = colInfo.Description;
                        dsData.Tables[0].Columns.Add(newCol);
                        dsData.Tables[0].Columns[COL_DEFAULT_KEY].SetOrdinal(keyColumnIndex++);
                    }
                }
            }
            ExcelEditHelper excelEditHelper = new ExcelEditHelper(_ExcelFilePath);

            excelEditHelper.DataProgress += new WinEIDrive.Import.ImportProgressEventHandler(xlsImport_DataProgress);
            excelEditHelper.CommitExcel(dsData);
            //MB.WinEIDrive.Import.XlsImport xlsImport = new MB.WinEIDrive.Import.XlsImport(dsData, _ExcelFilePath);
            //xlsImport.DataProgress += new WinEIDrive.Import.ImportProgressEventHandler(xlsImport_DataProgress);
            //xlsImport.Commit();
            MB.Util.DataValidated.Instance.RemoveNULLRowData(dsData);            //移除空行数据

            bool hasData = dsData != null && dsData.Tables.Count > 0 && dsData.Tables[0].Rows.Count > 0;

            if (hasData)
            {
                if (_EditColumns != null && _EditColumns.Count > 0)
                {
                    Dictionary <string, List <object> > clickButtonInputColsWithTexts = generateClickButtonWithTextDic(dsData);
                    Dictionary <string, Dictionary <object, DataRow> > clickButtonInputColsWithValues = covertClickButtonInputTextToValue(clickButtonInputColsWithTexts);
                    fillClickInputButtonValueBackTo(dsData, clickButtonInputColsWithValues);
                }

                //对数据源进行分类,对有主键的记录进行哈希
                List <T> sumitted = new List <T>();
                MB.Util.MyConvert.ConvertDataSetToEntity <T>(dsData, sumitted, null);

                foreach (T obj in sumitted)
                {
                    string mainKeyValue = generateKeyValueString(obj);
                    if (string.IsNullOrEmpty(mainKeyValue) || !_Values.Keys.Contains(mainKeyValue))
                    {
                        _SubmittedNewValue.Add(obj);
                    }
                    else
                    {
                        if (!_SubmittedValue.ContainsKey(mainKeyValue))
                        {
                            _SubmittedValue.Add(mainKeyValue, obj);
                        }
                        else
                        {
                            _SubmittedValue[mainKeyValue] = obj;
                        }
                        string value = computeHash(obj);
                        if (!_SubmittedHashedValues.ContainsKey(mainKeyValue))
                        {
                            _SubmittedHashedValues.Add(mainKeyValue, value);
                        }
                        else
                        {
                            _SubmittedHashedValues[mainKeyValue] = value;
                        }
                    }
                }
            }
        }
예제 #3
0
        static void Main(string[] args)
        {
            ExcelEditHelper ee = new ExcelEditHelper();

            ee.Create();
        }