programing

Excel에서 워크시트의 모든 셀을 선택하는 방법.c#의 범위 개체?

lastmoon 2023. 6. 21. 22:56
반응형

Excel에서 워크시트의 모든 셀을 선택하는 방법.c#의 범위 개체?

Excel 시트의 모든 셀을 선택하려고 합니다.Excel.Range자동 맞춤, 테두리 등을 적용하기 위한 C#의 객체.시트 안에 병합된 세포가 몇 개 있습니다.

그렇게 할 수 있는 간단한 방법이 있습니까?

Excel.Range theRange = (Excel.Range)CurrentSheet.UsedRange;

이 예제에서는 현재시트는 현재 사용 중인 시트를 저장한 변수입니다.

public void refreshSheetColumsSize(Worksheet ws)
 {
    ws.get_Range("a1").EntireRow.EntireColumn.Select();         
 }

여기에서 워크시트의 모든 셀을 선택합니다.

lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

공식적으로, 엑셀.작업 계획표.사용된 범위.행 및 Excel.작업 계획표.사용된 범위.열.

실제로는 버그가 있습니다. 시작 행과 열을 빼야 합니다.정답에 가장 가까운 답은 다음과 같습니다.

   Public ReadOnly Property LastColumn() As Integer
        Get
            Return ExcelWorksheet.UsedRange.Columns.Count + _
                   ExcelWorksheet.UsedRange.Column - 1
        End Get
    End Property
    Public ReadOnly Property LastRow() As Integer
        Get
            Return ExcelWorksheet.UsedRange.Rows.Count + _
                   ExcelWorksheet.UsedRange.Row - 1
        End Get
    End Property

이렇게 하면 적어도 사용된 모든 셀이 반환됩니다. 때로는 조금 더 반환됩니다.'조금 더'는 빈 셀이 아니라 빈 셀이나 다른 임의의 것 때문일 수 있습니다.제가 조사한 바로는 이것이 최선입니다.

만약 당신이 정말로 모든 것을 선택하고 싶다면.

ExcelWorksheet.Activate()
ExcelWorksheet.Cells.Select()

한동안 엑셀 개발을 하지 않았지만(Excel 2003) 코드로 구현하고자 했던 작업을 수행하면서 매크로를 기록하는 것은 도움이 되는 포인터가 충분하다는 것을 항상 발견했습니다.

이 경우 모든 셀을 선택하고 자동 맞춤을 수행하면 다음과 같은 코드가 제공됩니다.

Sub Macro1()
    Cells.Select
    Cells.EntireColumn.AutoFit
End Sub

대략 다음과 같은 뜻으로 해석할 수 있을 것 같습니다.

((Microsoft.Office.Interop.Excel.Range)_sheet.Cells.Select()).AutoFit();

여기서 _sheet는 사용 중인 워크시트의 인스턴스입니다.(테스트되지 않음)

워크시트의 모든 셀을 고려하기 위해 다음과 같이 쓸 수 있습니다.

workSheet.Cells[workSheet.Rows.Count,workSheet.Columns.Count]

OR

 workSheet.get_Range("A1","IV65536")

워크시트의 사용된 셀을 고려하기 위해 다음과 같이 쓸 수 있습니다.

workSheet.Rows.SpecialCells(XlCellType.xlCellTypeLastCell, XlSpecialCellsValue.xlTextValues)

여기서 "워크시트"는 작업 중인 시트를 나타냅니다.두 코드 샘플 모두 범위를 반환합니다.

도움이 되길 바랍니다!

Excel 2007에서 증가한 행/콜 수에 따라 훨씬 더 깔끔하며 변경되지 않습니다.

시트가 wsData라는 변수에 있는 경우:

wsData.Range(wsData.Cells(1, 1), wsData.Cells(wsData.Rows.Count, wsData.Columns.Count))

매우 간단합니다.

xlWorkSheet.UsedRange.Columns.Select()
worksheet.Columns.AutoFit()

여기서 "워크시트"는 워크시트 유형의 변수입니다.

        xlWorksheet.get_Range("a1").EntireRow.EntireColumn.AutoFit();
        xlWorksheet.get_Range("a1").EntireColumn.EntireRow.AutoFit();

셀 채우기가 완료된 후.

언급URL : https://stackoverflow.com/questions/4850738/how-to-select-all-the-cells-in-a-worksheet-in-excel-range-object-of-c

반응형