2012-01-11 3 views
6


전 Excel 열을 완전히 숨길 필요가 있습니다. 나는 아래의 코드를 사용하지만, 작동하지 않았다 :
엑셀 컬럼을 숨기는 방법?

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

나는 무엇을 놓치고?

답변

2

위의 스 니펫이 작동 중입니다. 죄송합니다. 문제는 동료 동료가 파일을 저장하기 직전에 모든 열을 자동으로 맞추는 것이었고 위의 설정보다 우선 적용됩니다. 예, CloseFile()이라는 함수가 두 가지 작업을 수행하고 형식을 지정하고 저장합니다. 많은 책임이 있습니까?

+1

왜 자동 맞춤 및 숨김이 충돌합니까? 둘 다 할 필요가 있습니다 - 특정 열 (열이 아닌)을 숨기지 만 자동 맞춤을 사용하십시오. –

2

지정한 행과 열을 숨기는 것이 훨씬 쉬울 수는 없습니다.

1) 워크 시트 이름 : 지금)

private Worksheet _xlSheet; 

2를 첫 번째 행과 열 숨기기 위해 다음 마지막 행을 포함하여 범위를 이름을 지정하고 당신이 그것을 할 방법은 다음 두 가지 간단한 단계에서의 등

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

이 숨기려는 첫 번째 행 42 가정 분명히 이러한 하드 코딩 된 값을 변경하는 것이 좋습니다 : 열과 같이, 숨 깁니다. 당신이 필요로하는

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 어셈블리를 참조하십시오.