C# OpenXML Excel列格式?

C# OpenXML Excel列格式?,c#,excel,openxml,openxml-sdk,C#,Excel,Openxml,Openxml Sdk,我正在使用OpenXMLSDK2.0通过带有OpenXML的模板将一些数据导出到Excel。我可以很好地将所有内容导出到Excel。但是,该模板有多个工作表(实际上都是),这些工作表的背景色(样式)应用于列,而不是单元格,因为Excel还没有对该单元格的实际引用 我正在用这些工作表上的数据填充数据行,并且设置的值很好,但是当我设置它们时,单元格的格式会返回默认的白色背景,不再适合工作表的其余部分 如何使单元格继承其所在列的样式?我想尝试查找列并获取其样式,然后将单元格样式设置为该样式,但我不知道

我正在使用OpenXMLSDK2.0通过带有OpenXML的模板将一些数据导出到Excel。我可以很好地将所有内容导出到Excel。但是,该模板有多个工作表(实际上都是),这些工作表的背景色(样式)应用于列,而不是单元格,因为Excel还没有对该单元格的实际引用

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

如何使单元格继承其所在列的样式?我想尝试查找列并获取其样式,然后将单元格样式设置为该样式,但我不知道如何通过引用来查找列。我可以迭代工作表中的所有列,但它们不给我它们的引用

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

    Cell newCell = new Cell() { CellReference = cellReference };
    if (refCell == null)
    { row.Append(newCell); }
    else
    { row.InsertBefore(newCell, refCell); }
refCell来自前面的代码,基本上是为了确保单元格按正确的顺序列出,因为如果它们不

那么设置实际值的部分是:

     c.CellValue = new CellValue(indx.ToString());
     c.DataType = new EnumValue<CellValues>(CellValues.SharedString);
c.CellValue=新的CellValue(indx.ToString());
c、 数据类型=新的枚举值(CellValues.SharedString);
indx是共享字符串表中字符串的索引

有人能帮忙吗


谢谢

您如何准确设置该值。 通常情况下,不应该对样式进行任何重写,但我自己没有测试过(我们不使用模板)

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

ExcelColumn columnReference = ExcelWorksheet.Column(columnIndex);
编辑: 顺便说一下,我正在使用EPPlus库()来实现这一点。
在我看来,这是一个非常容易使用的实现。我以为这就是您正在使用的单元格,但我可能错了。

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

您可以查看此页面,该页面解释如何基于单元格引用获取列名:


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

编辑以添加相关的代码部分。。。谢谢你在专栏上的提示。好的,我不知道如何让专栏工作。我在你上面贴的代码上找不到任何东西。我在OpenXML中看不到任何关于名为ExcelColumn的对象的内容。我看到了一列又一列,如果我手动打开xml文件,我可以看到一个元素,其中包含多个元素。但是,当我尝试worker.subjects()或worker.subjects()或worker.Elements()或worker.Elements()时,我什么也得不到……你究竟是如何获得列样式索引的?