programing

Excel Interop - 범위의 모든 테두리 그리기

goodsources 2023. 6. 10. 09:03
반응형

Excel Interop - 범위의 모든 테두리 그리기

Microsoft의 문서를 보면 'xlBorders'를 사용하여 셀의 특정 테두리에 액세스할 수 있습니다.인덱스' 속성 및 예를 들어 셀의 왼쪽 가장자리에 대한 테두리 스타일을 설정합니다.

range.Borders[Microsoft.Office.Interop.Excel.XlBordersIndex.xlEdgeLeft].LineStyle =     Excel.XlLineStyle.xlContinuous;

하지만 만약 제가 모든 경계를 그리고 싶다면요?난 시도했다.

range.BorderAround2();

하지만 그것은 단지 범위 자체에 상자를 그릴 뿐입니다, 제가 이해하는 바입니다.그래서 저는 노력했습니다.

range.Cells.BorderAround2();

범위 내의 각 셀을 통과하여 각 셀 주위에 모든 경계를 배치할 것이라고 생각합니다.이것은 일어난 일이 아닙니다.범위의 모든 셀 주위에 모든 경계를 설정하려면 4개의 경계 인덱스에 각각 수동으로 액세스해야 합니까?

private void AllBorders(Excel.Borders _borders)
    {
        _borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
        _borders.Color = Color.Black;
    }
oRange = SHEET2.get_Range("a1", "a10");
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeLeft).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlEdgeRight).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideHorizontal).LineStyle = Excel.XlLineStyle.xlContinuous;
oRange.Borders.get_Item(Excel.XlBordersIndex.xlInsideVertical).LineStyle = Excel.XlLineStyle.xlContinuous;

드디어 알았어요.저는 성능에도 영향을 주지 않고 이렇게 했습니다.여기서 설명하기 위해 간단한 엑셀을 사용합니다.

전에

여기에 이미지 설명 입력

범위를 저장할 수 있었습니다.A1:C4exRange에서 동적으로 변수에 포함되며 아래 코드를 사용하여 경계를 지정했습니다.

((Range)excelSheet.get_Range(exRange)).Cells.Borders.LineStyle = XlLineStyle.xlContinuous;


끝나고

여기에 이미지 설명 입력

아직 C#에 익숙하지 않지만 VBA에는Range.Borders(xlInsideVertical)그리고.Range.Borders(xlInsideHorizontal)특성.매크로 레코더를 사용하고 워크북 영역에 모든 테두리를 적용합니다.아마도 도움이 될 것입니다.

간단하게 하지 않는 이유:

Excel.Range tRange = xlWorkSheet.UsedRange;
tRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
tRange.Borders.Weight = Excel.XlBorderWeight.xlThin;

참고: 데이터로 채워진 행과 셀(범위) 뒤에 테두리를 적용하면 단순히 함수를 사용하여 범위를 얻을 수 있습니다.사용된 범위()

For Each range In ranges
    For Each row As Range In .Range(range).Rows
        row.Cells.BorderAround(XlLineStyle.xlContinuous)
        row.Cells.Borders.Item(XlBordersIndex.xlInsideHorizontal).LineStyle = XlLineStyle.xlContinuous
        row.Cells.Borders.Item(XlBordersIndex.xlInsideVertical).LineStyle = XlLineStyle.xlContinuous
    Next
Next
Microsoft.Office.Interop.Excel.Range tRange = xlWorkSheet.UsedRange;
        tRange.Borders.LineStyle = Microsoft.Office.Interop.Excel.XlLineStyle.xlContinuous;
        tRange.Borders.Weight = Microsoft.Office.Interop.Excel.XlBorderWeight.xlThin;
Excel.Range tRange = xlWorkSheet.UsedRange;
tRange.Borders.LineStyle = Excel.XlLineStyle.xlContinuous;
tRange.Borders.Weight = Excel.XlBorderWeight.xlThin;

이러한 방식으로는 작동하지 않습니다. 다음과 같은 결과를 얻을 수 있습니다.

여기에 이미지 설명 입력

언급URL : https://stackoverflow.com/questions/14663926/excel-interop-draw-all-borders-in-a-range

반응형