OpenXML Excel列格式?

时间:2013-07-22 07:29:56

标签: c# excel openxml openxml-sdk

我使用OpenXML SDK 2.0通过OpenXML模板将一些数据导出到Excel。我可以把所有东西都输出到Excel就好了。但是,模板有几张(实际上都是这些),其背景颜色(样式)应用于列而不是单元格,因为Excel还没有对该单元格的实际引用。

我在这些工作表中填入数据的数据行,并且设置的值很好,但是当我设置它们的格式时,它会回到默认的白色背景,不再适合工作表的其余部分。

如何让单元格继承其所在列的样式?我想过尝试查找列并获得它的样式并将单元格样式设置为,但我无法弄清楚如何通过它的引用找到列。我可以迭代工作表中的所有列,但他们没有给我他们的参考...

以下是实际将单元格插入一行的代码段:

    Cell newCell = new Cell() { CellReference = cellReference };
    if (refCell == null)
    { row.Append(newCell); }
    else
    { row.InsertBefore(newCell, refCell); }

refCell来自之前的代码,基本上是为了确保单元格按正确的顺序列出,因为如果它们不是,那么Excel会调整适合...

然后设置实际值的部分是:

     c.CellValue = new CellValue(indx.ToString());
     c.DataType = new EnumValue<CellValues>(CellValues.SharedString);

indx是共享字符串表中字符串的索引。

有人可以帮忙吗?

由于

2 个答案:

答案 0 :(得分:1)

你究竟是如何设定价值的。 通常情况下不应该覆盖样式,但我自己没有测试过(我们不使用模板)。

无论如何:要查找列引用,您可以使用:

ExcelColumn columnReference = ExcelWorksheet.Column(columnIndex);

修改 顺便说一句,我正在使用EPPlus库(http://epplus.codeplex.com/)。 在我看来,这是一个非常容易使用的实现。我以为那是你正在使用的那个,但我可能错了。

答案 1 :(得分:1)

您可以通过单元格引用获取列的名称,然后获取同一列中的所有单元格。如果列的第一个单元格具有样式,则可以使用它们的StyleIndex将其应用于当前单元格。

您可以查看此页面,其中介绍了如何根据单元格引用获取列名称:http://msdn.microsoft.com/en-us/library/office/cc822064.aspx

也许有更直接的方法来做你想做的事,但我不知道。