使用ExcelApplication进行单元格对齐

时间:2014-06-05 15:43:58

标签: officewriter

我使用的是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 }

到目前为止,我已尝试以几种不同的方式应用细胞比对,我似乎无法获得最终结果。有什么想法吗?

提前致谢。

1 个答案:

答案 0 :(得分: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与除我之外的任何人完全无关。有一些方法可以以更动态的方式进行,但这些输出在列数方面是静态的。