如何从Excel工作表中删除隐藏的列/行?

时间:2012-11-14 13:38:28

标签: excel office-interop excel-interop

我正在尝试从Excel工作表中删除所有隐藏的列,并且我正在使用Microsoft Office Interop。 问题是,当我遍历列时,我没有找到列隐藏属性集。 我不知道我在这里做错了什么。 任何帮助将不胜感激

int columnCount = wsCurrent.UsedRange.Columns.Count;
Excel.Worksheet wsCurrent = (Excel.Worksheet)wsEnumerator.Current;
for (int c = 1; c <= columnCount; c++)
{
    if (wsCurrent.UsedRange.get_Range((Excel.Range)wsCurrent.UsedRange.Cells[1, c], (Excel.Range)wsCurrent.UsedRange.Cells[wsCurrent.Rows.Count, c]).EntireColumn.Hidden)
        Console.WriteLine("Column Hidden");
}

1 个答案:

答案 0 :(得分:0)

顺便说一句,您的代码没有使用“r”变量声明。 使用下一个代码迭代单元格并确定单元格是否隐藏:

const double SIZE = 0.5;
int cols = sheet.UsedRange.Columns.Count;
int rows = sheet.UsedRange.Rows.Count;
Range usedRange = sheet.UsedRange;
for (int iCol = 1; iCol <= cols; iCol++)
{
    for (int jRow = 1; jRow <= rows; jRow++)
    {
        Range cellRng = (Excel.Range)usedRange.Cells[jRow, iCol];
        if (double.Parse(cellRng.ColumnWidth.ToString()) <= SIZE ||
         double.Parse(cellRng.RowHeight.ToString()) <= SIZE)
        { 
            /*do your stuff here*/
        }
    }
}

就像这样。需要恒定大小因为细胞可能几乎隐藏,但是它可能会被隐藏。代码必须优化,但概念很明确。