.net 将特定格式应用于TableColumn

.net 将特定格式应用于TableColumn,.net,openxml,.net,Openxml,我正在尝试创建一个电子表格文档,其中包含一个基于自定义表样式信息的表: stylesheet.DifferentialFormats = new DifferentialFormats ( new DifferentialFormat // 0 - TableStyleValues.WholeTable { Font = new Font { FontName = new FontName { Val = "Tahoma" } }, Fill =

我正在尝试创建一个
电子表格文档
,其中包含一个基于自定义
表样式信息的

stylesheet.DifferentialFormats = new DifferentialFormats
(
    new DifferentialFormat // 0 - TableStyleValues.WholeTable
    {
        Font = new Font { FontName = new FontName { Val = "Tahoma" } },
        Fill = new Fill { PatternFill = new PatternFill { PatternType = PatternValues.None } }
        Alignment = new Alignment { Horizontal = HorizontalAlignmentValues.General }
    },
    new DifferentialFormat // 1 - TableStyleValues.HeaderRow
    {
        Fill = new Fill
        {
            PatternFill = new PatternFill
            {
                PatternType = PatternValues.Solid,
                BackgroundColor = new BackgroundColor { Rgb = "FFF5F5F5" }
            }
        },
        Alignment = new Alignment { Horizontal = HorizontalAlignmentValues.Center }
    },
    new DifferentialFormat // 2 - TableStyleValues.SecondRowStripe
    {
        Fill = new Fill
        {
            PatternFill = new PatternFill
            {
                PatternType = PatternValues.Solid,
                BackgroundColor = new BackgroundColor { Rgb = "FFF5F5F5" }
            }
        }
    },
    new DifferentialFormat // 3 - Date
    {
        NumberingFormat = new NumberingFormat
        {
            NumberFormatId = 164,
            FormatCode = "dd/mm/yyyy"
        }
    }
) { Count = 4 };

stylesheet.TableStyles = new TableStyles(new TableStyle
(
    new TableStyleElement { Type = TableStyleValues.WholeTable, FormatId = 0 },
    new TableStyleElement { Type = TableStyleValues.HeaderRow, FormatId = 1 },
    new TableStyleElement { Type = TableStyleValues.SecondRowStripe, FormatId = 2 }
) { Name = "TableStyle", Table = true, Count = 3 });

tableDefPart.Table = new Table
{
    HeaderRowCount = 1,
    TableStyleInfo = new TableStyleInfo
    {
        Name = ((TableStyle)stylesheet.TableStyles.FirstChild).Name,
        ShowRowStripes = true
    },
    TableColumns = new TableColumns
    (
        new TableColumn
        {
            Id = 1,
            Name = "Name"
        },
        new TableColumn
        {
            Id = 2,
            Name = "Date",
            DataFormatId = 3 // no effect
        }
    ) { Count = 2 };
};
我的
differentingformats
集合包含4个项目,其中前3个项目引用自各自的
TableStyleElement
条目,而最后一个项目引用自第二个
TableColumn
定义。后者似乎不起作用。如果我将样式应用于,比如说,
SecondRowStripe
,它就会工作,因此格式本身是正确的

有人能解释一下TableColumn.DataFormatId
应该指向什么以及我做错了什么吗。谢谢

另外,将
TableColumn.DataCellStyle
设置为命名的
CellStyle
索引也不起作用,因此将自定义格式应用于
TableColumn
似乎一点也不受欢迎

字段说明:

数据格式ID

样式表中差异格式记录的一个从零开始的整数索引,指示应用于此列数据区域的格式。该格式也适用于该列插入行上的单元格。如果此索引超出范围,则电子表格应无法加载

数据单元样式

一个字符串,表示应用于此表列数据区域中的单元格的单元格样式的名称。如果此字符串缺失或与单元格样式的名称不对应,则应应用当前表格样式指定的数据单元格样式。此单元格样式应优先于表定义的dataCellStyle