我正在努力的事情一直困扰着我,我不禁想到别人会指出我一个简单的解决方案。
我写的一部分程序涉及以下内容:
我有一个C#程序,它使用自动排序将一系列过滤器应用于电子表格。已经排序的数据我要删除,目前它有点使用特殊单元但我认为我的方法并不精彩。
在删除数据之前,我删除了第一行,这是我的标题,不包括在删除中。然而,这可能会导致一个问题,如果我删除标题并且过滤后的数据实际上没有返回0行,那么当我调用我的specialcell删除它时会标记某种错误,说明没有范围。 什么是最好的解决方案,理想情况下我可以获取过滤范围并检查数据是否超过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 :(得分: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;
}