コード例 #1
0
        public static object ApplySpreadsheetData(
            this object asset,
            ISpreadsheetData spreadsheetData,
            string sheetName,
            object keyValue       = null,
            string sheetFieldName = "")
        {
            if (spreadsheetData.HasSheet(sheetName) == false)
            {
                return(asset);
            }

            var syncAsset = asset.CreateSheetScheme();

            var sheetValueIndo = new SheetValueInfo
            {
                Source          = asset,
                SheetName       = sheetName,
                SpreadsheetData = spreadsheetData,
                SyncScheme      = syncAsset,
                SyncFieldName   = sheetFieldName,
                SyncFieldValue  = keyValue,
                StartColumn     = 0
            };

            return(DefaultProcessor.ApplyData(sheetValueIndo));
        }
 public static bool IsInIgnoreCache(this SheetValueInfo valueInfo, object target)
 {
     return(valueInfo != null &&
            target != null &&
            valueInfo.IgnoreCache != null &&
            valueInfo.IgnoreCache.Contains(target));
 }
 public static bool IsInIgnoreCache(this SheetValueInfo valueInfo)
 {
     return(valueInfo != null &&
            valueInfo.Source != null &&
            valueInfo.IgnoreCache != null &&
            valueInfo.IgnoreCache.Contains(valueInfo.Source));
 }
コード例 #4
0
        public void Apply(SheetValueInfo valueInfo, DataRow row)
        {
            if (valueInfo == null)
            {
                throw new ArgumentNullException(nameof(valueInfo));
            }

            foreach (var coProcessor in _processors)
            {
                coProcessor.Apply(valueInfo, row);
            }
        }
コード例 #5
0
        public static object ApplySpreadsheetData(this object asset, SheetSyncScheme syncAsset, ISpreadsheetData data)
        {
            var sheetValueInfo = new SheetValueInfo
            {
                Source          = asset,
                SyncScheme      = syncAsset,
                SpreadsheetData = data,
                StartColumn     = 0
            };

            return(DefaultProcessor.ApplyData(sheetValueInfo));
        }
        public void Apply(SheetValueInfo sheetValueInfo, DataRow row)
        {
            sheetValueInfo.IgnoreCache = sheetValueInfo.IgnoreCache ?? new HashSet <object>();
            sheetValueInfo.IgnoreCache.Add(sheetValueInfo.SheetName.ToLower());

            var validColumns = GetValidColumns(sheetValueInfo, row);

            foreach (var cell in validColumns)
            {
                var nestedTableName = cell.Key;
                var nestedTableKey  = cell.Value;

                if (string.IsNullOrEmpty(nestedTableName) || string.IsNullOrEmpty(nestedTableKey.ToString()))
                {
                    continue;
                }

                sheetValueInfo.Source.ApplySpreadsheetData(sheetValueInfo, nestedTableName, nestedTableKey, overrideStartColumn: _overrideStartColumn);
            }
        }
コード例 #7
0
        public static object ApplySpreadsheetData(
            this object asset,
            SheetValueInfo sheetValueInfo,
            string sheetName,
            object keyValue         = null,
            string sheetFieldName   = "",
            int overrideStartColumn = 0)
        {
            if (!sheetValueInfo.SpreadsheetData.HasSheet(sheetName))
            {
                return(asset);
            }

            sheetValueInfo.SheetName      = sheetName;
            sheetValueInfo.SyncFieldName  = sheetFieldName;
            sheetValueInfo.SyncFieldValue = keyValue;
            sheetValueInfo.StartColumn    = overrideStartColumn;

            return(DefaultProcessor.ApplyData(sheetValueInfo));
        }
コード例 #8
0
        public static object ApplySpreadsheetData(
            this object asset,
            Type type,
            ISpreadsheetData sheetData,
            string sheetId,
            object keyValue       = null,
            string sheetFieldName = "")
        {
            var syncAsset = type.CreateSheetScheme();

            var sheetValue = new SheetValueInfo
            {
                Source          = asset,
                SheetName       = sheetId,
                SpreadsheetData = sheetData,
                SyncScheme      = syncAsset,
                SyncFieldName   = sheetFieldName,
                SyncFieldValue  = keyValue,
                StartColumn     = 0
            };

            return(DefaultProcessor.ApplyData(sheetValue));
        }
        private Dictionary <string, object> GetValidColumns(SheetValueInfo sheetValueInfo, DataRow row)
        {
            var result = new Dictionary <string, object>();

            var table     = row.Table;
            var rowValues = row.ItemArray;

            for (var i = 0; i < table.Columns.Count; i++)
            {
                var columnName = table.Columns[i].ColumnName;
                if (IsValidColumn(columnName))
                {
                    var tableName = GetTableName(columnName);
                    if (sheetValueInfo.IsInIgnoreCache(tableName))
                    {
                        continue;
                    }

                    result.Add(tableName, rowValues[i]);
                }
            }

            return(result);
        }