コード例 #1
0
        public static object GetRange(FillParameter parameter, Worksheet sheet, Dictionary<string, object> paramList)
        {
            if (!paramList.ContainsKey("rangeType"))
            {
                throw new ArgumentException("rangeType");
            }

            if (!paramList.ContainsKey("position"))
            {
                throw new ArgumentException("position");
            }

            if((string)paramList["rangeType"] == "cell")
            {
                return sheet.Range[paramList["position"], paramList["position"]];
            }

            int leftOffset = 0;
            int rightOffset = 0;
            int topOffset = 0;
            int bottomOffset = 0;
            int size = 0;
            if (paramList.ContainsKey("leftOffset"))
            {
                leftOffset = Convert.ToInt32(paramList["leftOffset"]);
            }
            if (paramList.ContainsKey("rightOffset"))
            {
                rightOffset = Convert.ToInt32(paramList["rightOffset"]);
            }
            if (paramList.ContainsKey("topOffset"))
            {
                topOffset = Convert.ToInt32(paramList["topOffset"]);
            }
            if (paramList.ContainsKey("bottomOffset"))
            {
                bottomOffset = Convert.ToInt32(paramList["bottomOffset"]);
            }
            if (paramList.ContainsKey("size"))
            {
                size = Convert.ToInt32(paramList["size"]) - 1;
            }

            Range targetRange = null;
            int lastRow = parameter.BatchSize > 100
                                      ? sheet.Cells.SpecialCells(XlCellType.xlCellTypeLastCell).
                                            Row - 1
                                      : parameter.RowOffset + parameter.BatchSize - 1;
            if (lastRow < parameter.RowOffset)
            {
                lastRow = parameter.RowOffset;
            }
            switch ((string)paramList["rangeType"])
            {
                case "row":
                    switch ((string)paramList["position"])
                    {
                        case "top":
                            targetRange = SheetDataAdapter.CalRange(sheet, parameter.RowOffset + topOffset,
                                                                    parameter.ColumnOffset + leftOffset,
                                                                    parameter.RowOffset + topOffset + size,
                                                                    parameter.ColumnOffset +
                                                                    parameter.ColumnNameArray.Length - 1 + rightOffset);
                            break;
                        case "bottom":
                            targetRange = SheetDataAdapter.CalRange(sheet, lastRow + bottomOffset,
                                                                    parameter.ColumnOffset + leftOffset,
                                                                    lastRow + bottomOffset + size,
                                                                    parameter.ColumnOffset +
                                                                    parameter.ColumnNameArray.Length - 1 + rightOffset);
                            break;
                    }
                    break;
                case "column":
                    switch ((string)paramList["position"])
                    {
                        case "left":
                            targetRange = SheetDataAdapter.CalRange(sheet, parameter.RowOffset + topOffset,
                                                                    parameter.ColumnOffset + leftOffset,
                                                                    lastRow + bottomOffset,
                                                                    parameter.ColumnOffset + leftOffset + size);
                            break;
                        case "right":
                            targetRange = SheetDataAdapter.CalRange(sheet, parameter.RowOffset + topOffset,
                                                                    parameter.ColumnOffset +
                                                                    parameter.ColumnNameArray.Length - 1 + rightOffset,
                                                                    lastRow + bottomOffset,
                                                                    parameter.ColumnOffset +
                                                                    parameter.ColumnNameArray.Length - 1 + rightOffset +
                                                                    size);
                            break;
                    }
                    break;
            }

            return targetRange;
        }
コード例 #2
0
 public static object GetRange(FillParameter parameter, Worksheet sheet, XElement element)
 {
     Dictionary<string, object> paramList = new Dictionary<string, object>();
     foreach (var attribute in element.Attributes())
     {
         paramList.Add(attribute.Name.LocalName, attribute.Value);
     }
     return GetRange(parameter, sheet, paramList);
 }