如何使用 OpenXml 将大纲 table 边框应用于单元格范围?

How to apply outline table border to a cell range using OpenXml?

我为每个单元格设置了边框样式。但是如果你仔细观察,你会发现蓝线不是连续的。垂直线上有一些白色散列标记。因为在 table 中,我将单元格的顶部和底部边框设置为白色。任何人都知道如何避免这种情况?

WorksheetPart v_worksheetPart = a_workbookPart.AddNewPart<WorksheetPart>();
v_worksheetPart.Worksheet = new Worksheet();
SheetData v_sheetData = new SheetData();
Row v_Row = new Row();
Cell v_Cell = new Cell();
...
v_Row.Append(v_Cell);
v_sheetData.Append(v_Row);
v_worksheetPart.Worksheet.AppendChild(v_sheetData);
...

直接打电话

ws.Cells[row, col].Style.Border.BorderAround(ExcelBorderStyle.Thin);

与其绘制白色边框来掩盖默认的灰色网格线,不如直接 hide the grid lines of your worksheet. To do this via code you would set the ShowGridLines property to False in the SheetView, like the code in this SO answer

然后删除将白色边框添加到解决方案的代码,并保留蓝色边框的代码。这将删除蓝色边框中的白色中断。

Taterhead 的解决方案很不错。我这里还有一个。不绘制白色边框,只需将单元格范围的背景色设置为白色即可。

感谢大家的帮助!

另一种解决方案是从所有网格线都为白色的工作表开始。 The first bullet here 向您展示如何使用 Excel 执行此操作。要在空白工作簿上执行此操作,请使用以下代码:

  sheetView1.DefaultGridColor = false;
  sheetView1.ColorId = 9U; 

According to the docs,这些属性告诉 excel 不要将网格线绘制为默认颜色,而是使用颜色索引 9。 9 对应于空白 excel 工作簿中的白色索引。默认情况下,它将使所有单元格具有白色网格线颜色。

然后,您将删除所有将单元格边框涂成白色的现有代码,并保留将单元格边框涂成蓝色的代码。这是另一种删除原始问题中白色散列标记的方法。