Excel Interop - 绘制范围内的所有边框

时间:2013-02-02 16:26:20

标签: c# excel interop

我从Microsoft的文档中看到,我可以使用'xlBordersIndex'属性访问单元格的特定边框边缘,例如设置单元格左边缘的边框样式:

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

但是,如果我只想绘制所有边框呢?我试过了

range.BorderAround2();

但是这只是围绕范围绘制了一个框,我理解。所以我试过

range.Cells.BorderAround2();

认为它会遍历范围内的每个单元格并将所有边框放在每个单元格周围。这不是发生的事情。因此,为了获得范围内所有单元格的所有边界,我必须手动访问四个边界索引中的每一个吗?

7 个答案:

答案 0 :(得分:19)

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;
    }

答案 1 :(得分:7)

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;

答案 2 :(得分:6)

我还不熟悉C#,但在VBA中有Range.Borders(xlInsideVertical)Range.Borders(xlInsideHorizontal)属性。尝试使用宏录制器并应用任何工作簿区域的所有边框。也许这会有所帮助。

答案 3 :(得分:3)

最后,我明白了。我这样做也没有影响性能。我在这里用一个简单的excel来解释:

之前

enter image description here

我设法将范围A1:C4动态地存储在 exRange 中的变量中,并使用下面的代码来提供边框

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


enter image description here

答案 4 :(得分:1)

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

答案 5 :(得分:1)

为什么不这样做:

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

注意:在行和单元格(范围)填充数据后应用边框,只需使用函数 .UsedRange()

获取范围

答案 6 :(得分:1)

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;