Пример #1
0
        /// <summary>
        /// Rangeオブジェクトの1行に対して重複チェックを行います。
        /// </summary>
        /// <param name="range">検索対象のRangeオブジェクト</param>
        /// <param name="exclude">除外したいキーワード</param>
        /// <returns></returns>
        public static string duplicateCheck(Excel.Range range, params string[] exclude)
        {
            if (range.Columns.Count >= 2)
            {
                throw new ArgumentOutOfRangeException();
            }

            string[] src = range.ColumnToString();



            return(null);
        }
Пример #2
0
        /// <summary>
        /// [拡張]Rangeオブジェクトの各行に対して重複している要素を抽出します。
        /// </summary>
        /// <returns></returns>
        public static List <int[]> extractDuplicate(this Excel.Range range)
        {
            if (range.Columns.Count >= 2)
            {
                throw new ArgumentOutOfRangeException();
            }
            List <int[]> ret = new List <int[]>();

            // 文字列に変換
            string[] columnstring = range.ColumnToString();

            // 配列空白以外の要素のクエリ
            var query = from x in columnstring
                        where x != ""
                        select x;

            // 空白以外の要素数
            // 重複及び空白以外の要素数
            // 2つの要素数が同じであれば、重複はないのでnullを返す。
            if (query.Count() == query.Distinct().Count())
            {
                return(null);
            }

            // 重複判定部分
            else
            {
                /* 重複のみの要素のクエリを作成します。
                 *
                 * <作成手順>
                 * 1)重複を入れるリストに1行すべての要素を追加します。
                 * 2)この要素から、重複を取り除いた要素を引き算します。(これで2つ以上あるものだけのリストになる)
                 * 3)3つ以上のものはまだ2つ以上残っているので、distinctしたクエリを作成します。
                 * 4)完成!!
                 */
                List <string> exceptlist = new List <string>(query);
                foreach (string s in query.Distinct <string>())
                {
                    exceptlist.Remove(s);
                }
                var exceptquery = exceptlist.Distinct <string>();

                foreach (string s in exceptquery)
                {
                    ret.Add(Util.deepSearch(columnstring, s));
                }
            }
            return(ret);
        }
Пример #3
0
 /// <summary>
 /// [拡張]Rangeクラスのオブジェクトの1列目(縦)を文字列配列に変換します。
 /// </summary>
 /// <returns>1次元の文字列配列を返します。</returns>
 public static string[] ColumnToString(this Excel.Range range)
 {
     return(range.ColumnToString(1));
 }