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:C4
exRange에서 동적으로 변수에 포함되며 아래 코드를 사용하여 경계를 지정했습니다.
((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
'programing' 카테고리의 다른 글
VBA가 엑셀에서 MySQL 데이터베이스에 어떻게 연결할 수 있습니까? (0) | 2023.06.10 |
---|---|
쉼표로 구분된 문자열을 입력할 수 있습니까? (0) | 2023.06.10 |
시트의 행 수 (0) | 2023.06.10 |
Oracle은 Foreign KEY 열에 대한 보조 인덱스를 자동으로 생성합니까? (0) | 2023.06.10 |
워드프레스에서 처음 로그인한 후 사용자를 리디렉션하시겠습니까? (0) | 2023.06.10 |