簡體   English   中英

如何在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$1:$P$4");

我想我可以像這樣設置范圍的行高:

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中將Range用於某些用途,但是使用通過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!${0}${1}:${2}${3}", 
            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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM