我正在尝试将Excel Interop代码转换为Spreadsheet Light。我想模仿的传统Interop代码是:
SLDocument sl;
. . .
sl.SetDefinedName("columnHeaderRowRange", "Sheet1!$A$1:$P$4");
我在Spreadsheet Light-ese中创建一个如此定义的名称(新名称或电子表格之光的范围说明):
sl.SetRowHeight("columnHeaderRowRange", 12);
我认为我可以为这个范围设置行高:
SLStyle headerStyle = sl.CreateStyle();
......但那不起作用;第一个arg必须是int(行索引)。
所以我想也许我可以将它添加到我可以应用于定义名称的样式中:
sl.SetCellStyle("columnHeaderRowRange", headerStyle); // Remember Merle Haggard!
..然后将该样式应用于定义的名称,如下所示:
headerStyle.Fill.SetPattern(DocumentFormat.OpenXml.
Spreadsheet.PatternValues.Solid, Color.Black, Color.LightBlue);
headerStyle.Font.Bold = true;
headerStyle.Font.FontSize = 12;
...但我在SLStyle中看不到允许我这样做的属性。
如何控制定义名称中所有行的高度?
我认为除了我的风格之外,我还可以从Excel Interop范围转换所有内容:
<div class="get-more" data-id="<?php $id; ?>">WHATEVER</div>
<script>
$(document).ready(function(){
$(".get-more").click(function(){
var url = 'path-to-php-handler.php';
var id = $(this).data("id");
var postit = $.post( url, {id:id});
postit.done(function( data ) {
// what you echo on the php handler is returned as data - do what you want with data
});
});
</script>
答案 0 :(得分:1)
同样的事情可以通过以下方式有效地实现:
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