1

我正在使用 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 是共享字符串表中字符串的索引。

任何人都可以帮忙吗?

谢谢

4

2 回答 2

1

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

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

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

于 2014-01-13T16:52:03.103 回答
1

你到底是如何设置值的。通常不应该对样式进行任何覆盖,但我自己没有测试过(我们不使用模板)。

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

ExcelColumn columnReference = ExcelWorksheet.Column(columnIndex);

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

于 2013-07-22T08:45:18.337 回答