如何在电子表格范围 (Aspose Cells) 周围添加边框?

How can I add borders around a spreadsheet range (Aspose Cells)?

我想为跨页的范围添加边框sheet。基于一些 VB 代码 here,我尝试了这个:

Range range = locationWorksheet.Cells.CreateRange(7, 0, 93, 6);

range.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Red);

...但它会将大部分数据推入 sheet,如下所示:

...这里:

这是 sheet 在添加这些边框之前的样子。

实际上,我也想要内部边框,不仅仅是边缘,而是首先要做的事情。

顺便说一句,这似乎也是一个非常 "expensive" 的操作 - 添加了边界代码后,报告的生成时间要长得多。

更新

我能够让它更好地工作,但它仍然弄乱了我的格式。使用此代码:

private void BorderizeDataPortionOfLocationSheet()
{
    int FUDGE_FACTOR = 5;
    int rowsUsed = locationWorksheet.Cells.Rows.Count + FUDGE_FACTOR;
    int colsUsed = locationWorksheet.Cells.Columns.Count; //QTY_COL; // last column
    string rangeBegin = RoboReporterConstsAndUtils.GetRangeLettersNumbersAsStr(1, 8);
    string rangeEnd = RoboReporterConstsAndUtils.GetRangeLettersNumbersAsStr(6, rowsUsed);
    Range entireSheetRange = locationWorksheet.Cells.CreateRange(rangeBegin, rangeEnd);

    CellsFactory cf = new CellsFactory();
    Style style = cf.CreateStyle();
    entireSheetRange.SetStyle(style);
    entireSheetRange.SetOutlineBorders(CellBorderType.Thin, Color.Black);
}

...我得到的边框不会将数据向下推 sheet:

但是当范围无边界时,它 86 化了我漂亮的格式,您可以在此处看到:

如何获得边框并保留格式?

您将轮廓边框应用于范围的代码是正确的,因为我已经针对 .NET 17.1.0 的最新版本 Aspose.Cells 对其进行了测试(可通过 NuGet 和 Aspose 下载部分获得)。请注意,设置轮廓边框不应干扰单元格的现有格式,因为 Range.SetOutlineBorder 仅在边框上运行,但是,如果您希望将边框应用于范围内的每个单独单元格,则现有格式可以被覆盖。

我将 post 示例代码以及您在 Aspose.Cells 支持论坛中创建的线程上的输入和输出电子表格,我恳请您与可执行文件一起分享您的输入电子表格Aspose.Cells 支持论坛中的一段代码,以便在问题仍然存在的情况下进行进一步调查。

var book = new Workbook(dataDir + "book1.xlsx");
var sheet = book.Worksheets[0];
var range = sheet.Cells.MaxDisplayRange;
//Setting outline border to range
range.SetOutlineBorder(BorderType.TopBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.BottomBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.LeftBorder, CellBorderType.Thick, Color.Blue);
range.SetOutlineBorder(BorderType.RightBorder, CellBorderType.Thin, Color.Red);

book.Save(dataDir + "output.xlsx");

注意:我在 Aspose 担任开发人员布道师。