Excel Internals:如何查找列的索引?

时间:2013-12-27 01:13:18

标签: c# excel openxml

我正在尝试确定每列的Style,以便将其应用于每个单元格中插入的数据。

令人困惑的部分是Column类提供MinMax值,而不是索引。有时它们是相同的,有时它们相隔1个单位。

Min-Max的交易是什么?

TIA

Worksheet worksheet = worksheetPart.Worksheet;
Columns   columns   = worksheet.GetFirstChild<Columns>();

for (Column column = (Column) columns.FirstChild; column != null; column = (Column) column.NextSibling())
{
    UInt32 Style;

    if (column.Style == null)
    {
        Style = 0;
    }
    else
    {
        Style = column.Style.Value;
    }
    var Min = column.Min.Value;
    var Max = column.Max.Value;
    Console.WriteLine("Column Min=" + Min + ", Max=" + Max + ", Style: " + Style);
}

1 个答案:

答案 0 :(得分:0)

事实证明,每个所谓的Column实际上都是物理列的聚合。当连续列具有相同的特征时,它们在内部组合成一个。

下面的代码展示了如何迭代它们并检索它们的Style

private Dictionary<char, UInt32> ColumnStyles(Worksheet worksheet)
{
    Columns columns = worksheet.GetFirstChild<Columns>();

    char colIndex = 'A';
    for (Column column = (Column)columns.FirstChild; column != null; column = (Column)column.NextSibling())
    {
        UInt32 Min   = column.Min.Value;
        UInt32 Max   = column.Max.Value;
        UInt32 Style = column.Style.Value;

        for (int i = 1; i <= Max - Min + 1; i++)
        {
            StyleOf[colIndex++] = Style;
        }
    }

    return StyleOf;
}