0

我正在使用 ExcelApplication,而不是 ExcelTemplate - 所以我正在以编程方式进行一些格式化,所以它只是一个超级普通的 excel 表 - 但是,我认为我的最终用户希望自己进行格式化,所以我保留它光。

按高度测量,我的标题行大于其他行:

        foreach (Worksheet ws in book)
        {
            ws.GetRowProperties(0).Height = 25; // this works
            ws.GetRowProperties(0).Style.VerticalAlignment = Style.VAlign.Center; // this has no effect
        }

到目前为止,我已经尝试以几种不同的方式应用单元对齐,但我似乎永远无法得到最终结果。有任何想法吗?

4

1 回答 1

0

Area我通过创建一个然后将样式应用于所述区域来处理这个问题:

Area headerArea;
Style headerAreaStyle = book.CreateStyle();
headerAreaStyle.VerticalAlignment = Style.VAlign.Center;
headerAreaStyle.HorizontalAlignment = Style.HAlign.Center;
headerAreaStyle.Font.Size = 13;

foreach (Worksheet ws in book)
{
    switch (ws.Name)
    {
        case ("First Sheet"):
            headerArea = ws.CreateArea(0, 0, 1, 2);
            headerArea.SetRowHeight(0, 20);
            headerArea.ApplyStyle(headerAreaStyle);
            break;
        case ("Second Sheet"):
            headerArea = ws.CreateArea(0, 0, 1, 5);
            headerArea.SetRowHeight(0, 20);
            headerArea.ApplyStyle(headerAreaStyle);
            break;
        case ("Third Sheet"):
            headerArea = ws.CreateArea(0, 0, 1, 3);
            headerArea.SetRowHeight(0, 20);
            headerArea.ApplyStyle(headerAreaStyle);
            break;
        case ("Fourth Sheet"):
            headerArea = ws.CreateArea(0, 0, 1, 3);
            headerArea.SetRowHeight(0, 20);
            headerArea.ApplyStyle(headerAreaStyle);
            break;
        default:
            break;
    }
}

我敢肯定还有其他更好的方法可以做到这一点,但它对我来说效果很好。

请注意,Switch这里与除我之外的任何人完全无关。有一些方法可以以更动态的方式进行,但这些导出在列数方面是静态的。

于 2014-06-05T16:14:06.573 回答