我正在尝试从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");
}
答案 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*/
}
}
}
就像这样。需要恒定大小因为细胞可能几乎隐藏,但是它可能会被隐藏。代码必须优化,但概念很明确。