1

我正在尝试从 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");
}
4

1 回答 1

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*/
        }
    }
}

像这样。需要恒定大小,因为单元格可能几乎被隐藏,但视觉上它将被隐藏。代码必须优化,但概念清晰。

于 2012-11-14T14:22:06.243 回答