gpt4 book ai didi

c# - 如何使用 C# 在 Excel 范围内添加边框?

转载 作者:太空狗 更新时间:2023-10-29 21:53:57 24 4
gpt4 key购买 nike

有人能告诉我如何用另一种颜色在一系列单元格的外部添加边框吗?理想情况下,我希望能够用一种方法来做到这一点,我将不得不多次这样做。搜索后,我发现了两种显然可以执行此操作的方法 - BorderAroundBorderAround2。我想我的第一个问题是这两种方法有什么区别?我尝试使用其中的每一个,但只有 BorderAround2 被识别?

无论如何,“BorderAround2”几乎可以满足我的要求。我使用了以下代码行,它确实在范围外放置了一个边框,但它是黑色的,而不是红色的:

ws.get_Range("B2", "E3").BorderAround2(Excel.XlLineStyle.xlContinuous, Excel.XlBorderWeight.xlThick, Excel.XlColorIndex.xlColorIndexNone, Color.FromArgb(255, 0, 0), Type.Missing);

MSDN documentation对于此方法说明:

You must specify either ColorIndex or Color, but not both.

我该怎么做呢?如果我将 ColourIndex 参数设置为 Type.Missingnull 或完全错过它,则会产生错误。任何帮助将不胜感激。

最后我应该指出我找到了一个变通解决方案 here在这里您分别设置集合的各个边,但正如我所说,我希望使用一种方法来做到这一点,因为它必须重复多次。

最佳答案

要为 Excel 范围(单元格范围,通常由 1..多行和 1..多列组成,但对于这种特定情况,我们可能希望坚持一行和 1..多列),你只需要做三件事:

0) Define the range
1) Get a reference to the Range's Borders array
2) Assign a border to one or more of the Border array's edges/sides (top, bottom, left, right)

首先,像这样定义你想要操作的范围:

var rowToBottomBorderizeRange = _xlSheet.Range[_xlSheet.Cells[rowToBottomBorderize, ITEMDESC_COL], _xlSheet.Cells[rowToBottomBorderize, TOTALS_COL]];

接下来,获取对 Range 的 Borders 数组的引用,如下所示:

Borders border = rowToBottomBorderizeRange.Borders;

最后,为 Border 数组的一条或多条边指定一个边框;例如,如果你想在底部添加一个边框,像这样:

border[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlContinuous;

将它们放在一起,代码可能是:

var rowToBottomBorderizeRange = _xlSheet.Range[_xlSheet.Cells[rowToBottomBorderize, ITEMDESC_COL], _xlSheet.Cells[rowToBottomBorderize, TOTALS_COL]];
Borders border = rowToBottomBorderizeRange.Borders;
border[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlContinuous;

如果您在多个地方执行此操作,您可以从中创建一个方法:

private void AddBottomBorder(int rowToBottomBorderize)
{
var rowToBottomBorderizeRange = _xlSheet.Range[_xlSheet.Cells[rowToBottomBorderize, ITEMDESC_COL], _xlSheet.Cells[rowToBottomBorderize, TOTALS_COL]];
Borders border = rowToBottomBorderizeRange.Borders;
border[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlContinuous;
}

上面的示例只显示添加底部边框,但您可以同样轻松地添加顶部、左侧或右侧边框线,将“xlEdgeBottom”替换为“xlEdgeTop”、“xlEdgeRight”或“xlEdgeLeft”

或者,您可以像这样在范围内添加边框:

private void Add360Borders(int rowToBorderize)
{
var rowToBottomBorderizeRange = _xlSheet.Range[_xlSheet.Cells[rowToBorderize, ITEMDESC_COL], _xlSheet.Cells[rowToBorderize, TOTALS_COL]];
Borders border = rowToBorderizeRange.Borders;
border[XlBordersIndex.xlEdgeBottom].LineStyle = XlLineStyle.xlContinuous;
border[XlBordersIndex.xlEdgeTop].LineStyle = XlLineStyle.xlContinuous;
border[XlBordersIndex.xlEdgeLeft].LineStyle = XlLineStyle.xlContinuous;
border[XlBordersIndex.xlEdgeRight].LineStyle = XlLineStyle.xlContinuous;
}

注意:您需要像这样定义工作表:

private Worksheet _xlSheet;

...并在您的解决方案中引用 Microsoft.Office.Interop.Excel 程序集。

关于c# - 如何使用 C# 在 Excel 范围内添加边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176424/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com