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 に答える