2012-07-19 73 views
1

我一直在努力的事情一直在困扰着我,我不禁想到别人会指点我一个简单的解决方案。如何从电子表格中删除过滤的数据?

程序我写的部分包括以下内容:

我有一个使用自动排序应用一系列的过滤器,电子表格中的C#程序。我想删除已经排序的数据,目前它使用的是特殊单元格,但我认为我的方法并不精彩。

在删除数据之前,我摆脱了第一行,这是我的标题,因此在删除中不包含此项。然而,这可能会导致一个问题,如果我删除标题和过滤的数据实际上没有更多的0行返回,然后当我打电话给我的特殊细胞删除它会标记出某种错误,说明没有范围。 最好的解决方案是什么,理想情况下,我可以抓住过滤的范围,并检查数据是否有超过1行,但我尝试的属性,如rows.count标记错误的数据类型。 这里是我的代码

Excel.Range AllRange = mySheet.UsedRange; 
Excel.Range filtered = AllRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); 

if (//SOME SORT OF COUNT SHOULD GO HERE IM GUESSING > 1) 
{ 
mySheet.Rows.EntireRow[1].Hidden = true; 
filtered = mySheet.UsedRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); 

filtered.EntireRow.Delete(Excel.XlDirection.xlUp); 
mySheet.Rows.EntireRow[1].Hidden = false;  
} 

类似的东西简化版本,我希望帮助。感谢您就此提供的任何建议。

+0

您能否确认您的问题中的代码是否应该是这样?布局表明一些大括号缺失或错误的地方,使您的问题不清楚。 – 2012-07-20 02:28:50

+0

Aww大括号没有把它变成我的代码片段。好吧,我想我已经找到了答案,并且我将为那些稍后可能有相同问题的人提供解决方案。 – SamAPOC 2012-07-23 16:30:30

回答

0

我发现了一个可行的解决方案。基本上你想要参加Areas.Count

Excel.Range AllRange = mySheet.UsedRange; 
Excel.Range filtered = AllRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); 

long colstuff = filtered.Areas.Count; 

if (colstuff > 1) 
{ 
    mySheet.Rows.EntireRow[1].Hidden = true; 
    filtered = mySheet.UsedRange.SpecialCells(Microsoft.Office.Interop.Excel.XlCellType.xlCellTypeVisible, Type.Missing); 

    filtered.EntireRow.Delete(Excel.XlDirection.xlUp); 
    mySheet.Rows.EntireRow[1].Hidden = false; 
} 
相关问题