Очистить предыдущий выбор выпадающего в EXCEL используя Apache POI - PullRequest
0 голосов
/ 13 июня 2018

Я разработал Excel, используя dll Apache NPOI, используя HSSFWORKBOOK.Но в моем превосходстве было 3 зависимых выпадающих списка по одному.

Здесь мой вопрос: я не могу очистить значение ячейки зависимых выпадающих списков.Допустим, как у dropdown1 есть значения страны, так и при выборе этого значения dropdown2 получил фильтр и выбрал одно из состояний.Теперь, если я изменил страну, снова смог отфильтровать данные, но независимо от предыдущего выбора состояния не очищается.

Here is the Sample that dropdown 2 and 3 are not cleared if i changed the dropdown1 value.

код ссылки:

Нет, я просто ссылаюсь на список данных столбцов от sheet2 до sheet1, используя формулы.ниже код ссылки:

for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                {

                    //if (i >= MaxRowCount)
                    //{
                    //    sheet2.CreateRow(1000 + i).CreateCell(1).SetCellValue(ds.Tables[0].Rows[i][1].ToString());
                    //    MaxRowCount += 1;
                    //}
                    //else
                    //    sheet2.GetRow(1000 + i).CreateCell(1).SetCellValue(ds.Tables[0].Rows[i][1].ToString());

                    if (CategoryCount == 250)
                    {
                        rownumber = rownumber + 3000;
                        CategoryCount = 16;
                        MaxRowCount = 0;

                    }

                    DataRow[] DR = ds.Tables[1].Select("LOCATION_ID=" + ds.Tables[0].Rows[i][0].ToString());
                    int RowCount = 0;

                    //int rownumber = 1000;
                    foreach (DataRow d in DR)
                    {

                        if (RowCount >= MaxRowCount)
                        {
                            sheet2.CreateRow(rownumber + RowCount).CreateCell(CategoryCount).SetCellValue(d[0].ToString());
                            MaxRowCount += 1;
                        }
                        else
                        {
                            sheet2.GetRow(rownumber + RowCount).CreateCell(CategoryCount).SetCellValue(d[0].ToString());
                        }
                        RowCount++;
                    }





IName DeptHierarchy_Dept = hssfworkbook.CreateName();
                            DeptHierarchy_Dept.NameName = "XDeptHierarchy_Dept_SUB" + (XDeptHierarchy_Dept_SUBCount).ToString();
                            if (CategoryCount / 26 < 1)
                                DeptHierarchy_Dept.RefersToFormula = "'Template Field Specs2'!$" + ((char)(65 + CategoryCount)).ToString() + "$" + (StartRowNumber + 1) + ":$" + ((char)(65 + CategoryCount)).ToString() + "$" + ((StartRowNumber + 1) + (RowCount == 0 ? 0 : RowCount - 1)).ToString();
                            else
                                DeptHierarchy_Dept.RefersToFormula = "'Template Field Specs2'!$" + ((char)(65 + (CategoryCount / 26) - 1)).ToString() + ((char)(65 + CategoryCount % 26)).ToString() + "$" + (StartRowNumber + 1) + ":$" + ((char)(65 + (CategoryCount / 26) - 1)).ToString() + ((char)(65 + CategoryCount % 26)).ToString() + "$" + ((StartRowNumber + 1) + (RowCount == 0 ? 0 : RowCount - 1)).ToString();
                            CategoryCount++;
                            XDeptHierarchy_Dept_SUBCount++;

1 Ответ

0 голосов
/ 18 июня 2018

Вы ищете "зависимые выпадающие списки".Вы должны проявить творческий подход к своей формуле, потому что ваш ряд будет меняться.Один из подходов, который я могу придумать, - это хранить список «Страна-столица» в названном регионе, где некоторые из них находятся глубоко в Excel.При выборе страны проанализируйте и найдите столицу из названного региона и заполните целевую ячейку.Пожалуйста, смотрите документацию .Также эта ссылка ;

...