如何使用OpenXml将轮廓表边框应用于单元格范围?

时间:2017-09-12 18:16:43

标签: c# border cell openxml spreadsheetml

我为每个单元格设置边框样式。但仔细观察,你会发现蓝线不连续。垂直线上有一些白色哈希标记。因为在表格内部,我将顶部和底部单元格边框设置为白色。谁知道如何避免这种情况?

Table Cell

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);
...

4 个答案:

答案 0 :(得分:3)

致电

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

答案 1 :(得分:2)

而不是绘制白色边框以掩盖默认的灰色网格线,而应该只是hide the grid lines of your worksheet。要通过代码执行此操作,您需要设置ShowGridLines property to False in the SheetView,就像this SO answer中的代码一样。

然后删除为解决方案添加白色边框的代码,并留下蓝色边框的代码。这将消除蓝色边框中的白色碎片。

答案 2 :(得分:1)

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

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

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

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

答案 3 :(得分:0)

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

感谢大家的帮助!