2016-04-06 19 views
0

我想将Excel Interop代码转换为Spreadsheet Light。旧式互操作代码,我想模仿是:如何在Spreadsheet Light中为已定义的名称(范围)设置行高?

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; 

我创建一个定义的名称(新名称,或电子表格轻的描述,某个范围的)像这样,在电子表格光ESE:

SLDocument sl; 
. . . 
sl.SetDefinedName("columnHeaderRowRange", "Sheet1!$A$1:$P$4"); 

我想我可以设置的行高度范围是这样的:

sl.SetRowHeight("columnHeaderRowRange", 12); 

...但不工作;第一个参数必须是一个int(行索引)。

所以我想也许我可以把它添加到一个风格,我可以再申请到定义名称:

SLStyle headerStyle = sl.CreateStyle(); 

..和那么样式应用到定义的名称,像这样:

sl.SetCellStyle("columnHeaderRowRange", headerStyle); // Remember Merle Haggard!  

......但我看不到SLStyle中的任何属性,这些属性也允许我这样做。

如何控制定义名称内所有行的高度?

我想我已经在我的风格转换在除此之外的Excel的互操作范围内的一切:

headerStyle.Fill.SetPattern(DocumentFormat.OpenXml. 
    Spreadsheet.PatternValues.Solid, Color.Black, Color.LightBlue); 
headerStyle.Font.Bold = true; 
headerStyle.Font.FontSize = 12; 

回答

1

同样的事情可以有效地通过来完成:

sl.SetRowHeight(1, 4, 12); 

...或者,如果你想要的范围贯穿最后一行添加:

var stats = sl.GetWorksheetStatistics(); 
var rowcount = stats.NumberOfRows; 
sl.SetRowHeight(1, rowcount, 12); 

虽然无法使用对于一些事情的电子表格光一个范围,它似乎很容易通过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 
相关问题