如何隐藏excel列?

我需要完全隐藏一个excel列。 我用下面的代码,但没有工作:

public void Hide (params string[] columns) { foreach(var column in columns) { Range range = (Range) oSheet.Columns[column, Type.Missing]; range.EntireColumn.Hidden = true; } } 

我错过了什么?

上面的代码段正在工作..对不起,家伙! 问题是,我的同事曾经在保存文件之前自动适应所有列,这将覆盖上面的设置。 是的,一个名为CloseFile()的函数可以执行两个任务,格式化并保存..许多责任,呃?

事实certificate,隐藏你指定的行和列的范围并不是一件容易的事情。 你可以通过两个简单的步骤来实现:

1)为您的工作表命名:

 private Worksheet _xlSheet; 

2)现在,命名一个范围,包括要隐藏的第一行和第一列,然后隐藏最后一行和第二列,如下所示:

 var hiddenRange = yourWorksheet.Range[_xlSheet.Cells[42, 1], _xlSheet.Cells[999, 13]]; hiddenRange.EntireRow.Hidden = true; 

这假定你想要隐藏的第一行是42等。显然你会想改变这些硬编码的值。

作为一个例子,下面是一些实际的代码,使用常量和variables而不是硬编码的vals,它响应一个布尔值,该值指示范围是否应该隐藏。

 private bool _hide; private int _curTopRow; private static readonly int ITEMDESC_COL = 1; private static readonly int TOTALS_COL = 16; . . . if (_hide) { var hiddenRange = _xlSheet.Range[_xlSheet.Cells[_curTopRow, ITEMDESC_COL], _xlSheet.Cells[_curTopRow+3, TOTALS_COL]]; hiddenRange.EntireRow.Hidden = true; } 

请注意,您需要引用Microsoft.Office.Interop.Excel程序集。