为什么我的底部边框不限制在 Excel 范围内?
Why is my bottom border not restricting itself to the border of the Excel range?
我有这段代码可以为范围添加底部边框:
var rowRngForHorBorder = _xlSheet.Range[_xlSheet.Cells[4, 1], _xlSheet.Cells[4, 17]];
Excel.Borders _borders = rowRngForHorBorder.Borders;
_borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders.Weight = Excel.XlBorderWeight.xlMedium;
这就是我想要的样子,或多或少:
...这是 的样子:
为什么垂直线与水平底部一起乱七八糟地and/or散乱?谁告诉他们他们会破坏电子表格?
更新
它仍然不适合我;使用此更新代码:
var rng = _xlSheet.Range[_xlSheet.Cells[5, 1], _xlSheet.Cells[5, 17]];
Excel.Borders _borders = rng.Borders;
rng.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
_borders.Weight = Excel.XlBorderWeight.xlMedium;
...我明白了:
GrammatonCleric 建议的代码似乎很合理,它应该 有效...但它仍然无效。
我看过这个,下面的内容对我有用...应该对你有用:
Excel.Range rng = workSheet.Range[workSheet.Cells[4, 1], workSheet.Cells[4, 17]];
rng.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlMedium;
看来您必须单独设置每个元素的样式,否则 Excel API 认为它应该在您的范围周围应用完整的边框。
奇怪。
这是我的电子表格的样子:
此外,我正在使用以下 Excel.Interop 参考资料:
这个,再加上我之前发的Border代码作品:)
再来一个bash?
使用 SpreadsheetLight 和 OpenXML 非常简单:
首先,创建样式:
sl = new SLDocument();
. . .
SLStyle styleBottomBorder = sl.CreateStyle();
styleBottomBorder.Border.BottomBorder.BorderStyle = BorderStyleValues.Thick;
styleBottomBorder.Border.BottomBorder.Color = System.Drawing.Color.Black;
然后将其应用于一行:
sl.SetRowStyle(5, styleBottomBorder);
比 Excel Interop 方式更直观(后者甚至对我不起作用)。
很高兴你成功了。
我会建议使用 OpenXML。我过去曾尝试过几次使用它,但从未实现过使用 Excel.Interop 程序集可以实现的某些功能,因此我不推荐它并赌一下它是否可能或者可能不适合你。
不管怎样,很高兴它起作用了:)
我有这段代码可以为范围添加底部边框:
var rowRngForHorBorder = _xlSheet.Range[_xlSheet.Cells[4, 1], _xlSheet.Cells[4, 17]];
Excel.Borders _borders = rowRngForHorBorder.Borders;
_borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
_borders.Weight = Excel.XlBorderWeight.xlMedium;
这就是我想要的样子,或多或少:
...这是 的样子:
为什么垂直线与水平底部一起乱七八糟地and/or散乱?谁告诉他们他们会破坏电子表格?
更新
它仍然不适合我;使用此更新代码:
var rng = _xlSheet.Range[_xlSheet.Cells[5, 1], _xlSheet.Cells[5, 17]];
Excel.Borders _borders = rng.Borders;
rng.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
_borders.Weight = Excel.XlBorderWeight.xlMedium;
...我明白了:
GrammatonCleric 建议的代码似乎很合理,它应该 有效...但它仍然无效。
我看过这个,下面的内容对我有用...应该对你有用:
Excel.Range rng = workSheet.Range[workSheet.Cells[4, 1], workSheet.Cells[4, 17]];
rng.Borders[Excel.XlBordersIndex.xlEdgeLeft].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeRight].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeTop].LineStyle = Excel.XlLineStyle.xlLineStyleNone;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].LineStyle = Excel.XlLineStyle.xlContinuous;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].ColorIndex = Excel.XlColorIndex.xlColorIndexAutomatic;
rng.Borders[Excel.XlBordersIndex.xlEdgeBottom].Weight = Excel.XlBorderWeight.xlMedium;
看来您必须单独设置每个元素的样式,否则 Excel API 认为它应该在您的范围周围应用完整的边框。
奇怪。
这是我的电子表格的样子:
此外,我正在使用以下 Excel.Interop 参考资料:
这个,再加上我之前发的Border代码作品:)
再来一个bash?
使用 SpreadsheetLight 和 OpenXML 非常简单:
首先,创建样式:
sl = new SLDocument();
. . .
SLStyle styleBottomBorder = sl.CreateStyle();
styleBottomBorder.Border.BottomBorder.BorderStyle = BorderStyleValues.Thick;
styleBottomBorder.Border.BottomBorder.Color = System.Drawing.Color.Black;
然后将其应用于一行:
sl.SetRowStyle(5, styleBottomBorder);
比 Excel Interop 方式更直观(后者甚至对我不起作用)。
很高兴你成功了。
我会建议使用 OpenXML。我过去曾尝试过几次使用它,但从未实现过使用 Excel.Interop 程序集可以实现的某些功能,因此我不推荐它并赌一下它是否可能或者可能不适合你。
不管怎样,很高兴它起作用了:)