gpt4 book ai didi

c# - 如何从电子表格中删除过滤后的数据?

转载 作者:太空宇宙 更新时间:2023-11-03 13:57:55 24 4
gpt4 key购买 nike

我一直在做的事情一直困扰着我,我不禁想到其他人会给我指出一个简单的解决方案。

我正在编写的部分程序涉及以下内容:

我有一个 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;
}

类似的,希望对你有帮助。感谢您就此事提供的任何建议。

最佳答案

我找到了一个有效的解决方案。基本上,您想要获取 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;
}

关于c# - 如何从电子表格中删除过滤后的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11565928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com