Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用PACHE POI清除EXCEL中以前选择的下拉列表_Apache_Apache Poi_Npoi - Fatal编程技术网

Apache 使用PACHE POI清除EXCEL中以前选择的下拉列表

Apache 使用PACHE POI清除EXCEL中以前选择的下拉列表,apache,apache-poi,npoi,Apache,Apache Poi,Npoi,我已经使用ApacheNPOIDLL和HSSFWORKBOOK开发了excel。但在我的excel中,有3个相互依赖的下拉列表 这里我的问题是我无法清除依赖下拉列表的单元格值。比如说,like dropdown1有国家值,在选择这个dropdown2 state值时,得到了一个过滤器并选择了一个状态。现在,如果我再次更改国家/地区,则可以过滤数据,但无论以前的州选择是什么,都不会被清除 代码参考: 不,我只是使用公式将表2中的列数据列表引用到表1中。以下是代码参考: for (int i =

我已经使用ApacheNPOIDLL和HSSFWORKBOOK开发了excel。但在我的excel中,有3个相互依赖的下拉列表

这里我的问题是我无法清除依赖下拉列表的单元格值。比如说,like dropdown1有国家值,在选择这个dropdown2 state值时,得到了一个过滤器并选择了一个状态。现在,如果我再次更改国家/地区,则可以过滤数据,但无论以前的州选择是什么,都不会被清除

代码参考:


不,我只是使用公式将表2中的列数据列表引用到表1中。以下是代码参考:

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++;
for(int i=0;i=MaxRowCount)
//{
//sheet2.CreateRow(1000+i).CreateCell(1).SetCellValue(ds.Tables[0].Rows[i][1].ToString());
//MaxRowCount+=1;
//}
//否则
//sheet2.GetRow(1000+i).CreateCell(1).SetCellValue(ds.Tables[0].Rows[i][1].ToString());
如果(类别计数==250)
{
rownumber=rownumber+3000;
类别计数=16;
MaxRowCount=0;
}
DataRow[]DR=ds.Tables[1]。选择(“LOCATION_ID=“+ds.Tables[0]。Rows[i][0]。ToString());
int RowCount=0;
//整数行数=1000;
foreach(DR中的数据行d)
{
如果(行计数>=MaxRowCount)
{
sheet2.CreateRow(rownumber+RowCount).CreateCell(CategoryCount).SetCellValue(d[0].ToString());
MaxRowCount+=1;
}
其他的
{
sheet2.GetRow(rownumber+RowCount).CreateCell(CategoryCount).SetCellValue(d[0].ToString());
}
行计数++;
}
IName DeptHierarchy_Dept=hssfworkbook.CreateName();
DeptHierarchy_Dept.name=“XDeptHierarchy_Dept_SUB”+(XDeptHierarchy_Dept_SUBCount).ToString();
if(类别计数/26<1)
DeptHierarchy_Dept.referestoformula=“'Template Field Specs2'!$”+((char)(65+CategoryCount)).ToString()+“$”+(startrownNumber+1)+“:$”+((char)(65+CategoryCount)).ToString()+“$”+((startrownNumber+1)+(RowCount==0?0:RowCount-1)).ToString();
其他的
DeptHierarchy_Dept.referestoformula=“'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)+)+“$”+((StartRowNumber+1)+(RowCount==0?0:RowCount-1)).ToString();
CategoryCount++;
XDeptHierarchy_Dept_SUBCount++;
您正在寻找“相关下拉列表”。您必须对公式进行创新,因为您的行将不断更改。 我能想到的一种方法是将“国家资本”列表存储在excel中的指定区域的某个深处。在选择国家时,解析并查找指定区域中的资本,然后填充目标单元格。 请看地图。
另外,这;

您是否使用row.Cells[header].SetCellValue(“state”);设置国家/地区更改的值?请共享您的代码片段。不,我只是使用公式将数据从sheet2列到sheet1列。请参阅上面的代码参考。