如何在 Spreadsheet Light 中设置定义名称(范围)的行高?
How can I set the row height for a defined name (range) in Spreadsheet Light?
我正在尝试将 Excel Interop 代码转换为 Spreadsheet Light。我想模拟的遗留 Interop 代码是:
var columnHeaderRowRange = _xlSheetFillRateByDistributorByCustomer.Range[
_xlSheetFillRateByDistributorByCustomer.Cells[1, 1],
_xlSheetFillRateByDistributorByCustomer.Cells[1, 16]];
columnHeaderRowRange.Interior.Color = Color.LightBlue;
columnHeaderRowRange.RowHeight = 12;
columnHeaderRowRange.Font.Bold = true;
columnHeaderRowRange.Font.Size = 11;
我在 Spreadsheet Light-ese 中创建一个定义名称(新名称,或 Spreadsheet Light 对范围的描述):
SLDocument sl;
. . .
sl.SetDefinedName("columnHeaderRowRange", "Sheet1!$A:$P");
我想我可以像这样设置范围的行高:
sl.SetRowHeight("columnHeaderRowRange", 12);
...但这不起作用;第一个 arg 必须是 int(行索引)。
所以我想也许我可以将它添加到一个样式中,然后我可以将其应用于定义的名称:
SLStyle headerStyle = sl.CreateStyle();
..然后将该样式应用于定义的名称,如下所示:
sl.SetCellStyle("columnHeaderRowRange", headerStyle); // Remember Merle Haggard!
...但我在 SLStyle 中也没有看到允许我这样做的属性。
如何控制定义名称中所有行的高度?
我想我已经转换了 Excel Interop 范围内的所有内容,此外还有我的风格:
headerStyle.Fill.SetPattern(DocumentFormat.OpenXml.
Spreadsheet.PatternValues.Solid, Color.Black, Color.LightBlue);
headerStyle.Font.Bold = true;
headerStyle.Font.FontSize = 12;
同样的事情可以通过以下方式有效地完成:
sl.SetRowHeight(1, 4, 12);
...或者如果您希望范围为 运行 到添加的最后一行:
var stats = sl.GetWorksheetStatistics();
var rowcount = stats.NumberOfRows;
sl.SetRowHeight(1, rowcount, 12);
虽然无法使用 Spreadsheet Light 对某些事物使用范围,但使用通过 GetWorksheetStatistics() 方法可用的值似乎很容易完成方便的任务,例如适合每一行和每一列:
SLWorksheetStatistics wsstats = sl.GetWorksheetStatistics();
int rowCount = wsstats.NumberOfRows;
int colCount = wsstats.NumberOfColumns;
sl.AutoFitRow(1, rowCount);
sl.AutoFitColumn(1, colCount);
当然,在这样的情况下也可以使用提供定义名称的值:
sl.SetDefinedName("grandTotalRowRange",
string.Format("Sheet1![=13=]:",
GetExcelTextColumnName(SHORTNAME_BYDCBYLOC_COL),
rowToPopulate,
GetExcelTextColumnName(QTYSHIPPED_BYDCBYLOC_COL),
rowToPopulate)
);
sl.AutoFitRow(rowToPopulate, rowToPopulate); // autofit the one row
sl.AutoFitColumn(SHORTNAME_BYDCBYLOC_COL, QTYSHIPPED_BYDCBYLOC_COL); // autofit the subset of columns
我正在尝试将 Excel Interop 代码转换为 Spreadsheet Light。我想模拟的遗留 Interop 代码是:
var columnHeaderRowRange = _xlSheetFillRateByDistributorByCustomer.Range[
_xlSheetFillRateByDistributorByCustomer.Cells[1, 1],
_xlSheetFillRateByDistributorByCustomer.Cells[1, 16]];
columnHeaderRowRange.Interior.Color = Color.LightBlue;
columnHeaderRowRange.RowHeight = 12;
columnHeaderRowRange.Font.Bold = true;
columnHeaderRowRange.Font.Size = 11;
我在 Spreadsheet Light-ese 中创建一个定义名称(新名称,或 Spreadsheet Light 对范围的描述):
SLDocument sl;
. . .
sl.SetDefinedName("columnHeaderRowRange", "Sheet1!$A:$P");
我想我可以像这样设置范围的行高:
sl.SetRowHeight("columnHeaderRowRange", 12);
...但这不起作用;第一个 arg 必须是 int(行索引)。
所以我想也许我可以将它添加到一个样式中,然后我可以将其应用于定义的名称:
SLStyle headerStyle = sl.CreateStyle();
..然后将该样式应用于定义的名称,如下所示:
sl.SetCellStyle("columnHeaderRowRange", headerStyle); // Remember Merle Haggard!
...但我在 SLStyle 中也没有看到允许我这样做的属性。
如何控制定义名称中所有行的高度?
我想我已经转换了 Excel Interop 范围内的所有内容,此外还有我的风格:
headerStyle.Fill.SetPattern(DocumentFormat.OpenXml.
Spreadsheet.PatternValues.Solid, Color.Black, Color.LightBlue);
headerStyle.Font.Bold = true;
headerStyle.Font.FontSize = 12;
同样的事情可以通过以下方式有效地完成:
sl.SetRowHeight(1, 4, 12);
...或者如果您希望范围为 运行 到添加的最后一行:
var stats = sl.GetWorksheetStatistics();
var rowcount = stats.NumberOfRows;
sl.SetRowHeight(1, rowcount, 12);
虽然无法使用 Spreadsheet Light 对某些事物使用范围,但使用通过 GetWorksheetStatistics() 方法可用的值似乎很容易完成方便的任务,例如适合每一行和每一列:
SLWorksheetStatistics wsstats = sl.GetWorksheetStatistics();
int rowCount = wsstats.NumberOfRows;
int colCount = wsstats.NumberOfColumns;
sl.AutoFitRow(1, rowCount);
sl.AutoFitColumn(1, colCount);
当然,在这样的情况下也可以使用提供定义名称的值:
sl.SetDefinedName("grandTotalRowRange",
string.Format("Sheet1![=13=]:",
GetExcelTextColumnName(SHORTNAME_BYDCBYLOC_COL),
rowToPopulate,
GetExcelTextColumnName(QTYSHIPPED_BYDCBYLOC_COL),
rowToPopulate)
);
sl.AutoFitRow(rowToPopulate, rowToPopulate); // autofit the one row
sl.AutoFitColumn(SHORTNAME_BYDCBYLOC_COL, QTYSHIPPED_BYDCBYLOC_COL); // autofit the subset of columns