OpenXML Excel column format?

本文关键字:format column Excel OpenXML | 更新日期: 2023-09-27 18:24:06

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

有人能帮忙吗?

感谢

OpenXML Excel column format?

您究竟是如何设置该值的。通常不应该有任何样式的覆盖,但我自己还没有测试过(我们不使用模板)。

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

ExcelColumn columnReference = ExcelWorksheet.Column(columnIndex);

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

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

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

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