如何在电子表格范围 (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 担任开发人员布道师。
我想为跨页的范围添加边框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 担任开发人员布道师。