从行获取工作簿零件

问题描述 投票:0回答:1

我正在编写和扩展OpenXML,如示例中所示。我想避免必须将WorkbookPart作为参数传递。有什么方法可以直接从行中获取WorkbookPart吗?

public static string GetCellTextValue(this Row row, WorkbookPart workbookPart, string column)
{            
    var cells = row.Elements<Cell>();
    var cell = cells.Where(p => p.CellReference == column + row.RowIndex.ToString()).FirstOrDefault();

    if (cell.DataType != null)
    {
        if (cell.DataType == CellValues.SharedString)
        {
            int id = -1;

            if (Int32.TryParse(cell.InnerText, out id))
            {
                SharedStringItem item = workbookPart.SharedStringTablePart.SharedStringTable.Elements<SharedStringItem>().ElementAt(id);

                if (item.Text != null)
                {
                    return item.Text.Text;
                }
                else if (item.InnerText != null)
                {
                    return item.InnerText;
                }
                else if (item.InnerXml != null)
                {
                    return item.InnerXml;
                }
            }
        }
    }
    return string.Empty;
}
openxml openxml-sdk
1个回答
1
投票

[不幸的是,Open XML SDK的强类型类(例如WorkbookWorksheetRow)都没有指向OpenXmlPart的属性(例如WorkbookPartWorksheetPart )包含在其中或与其直接容器有关的任何其他部分。除非您以其他方式修改API,否则您将必须传递WorkbookPart

© www.soinside.com 2019 - 2024. All rights reserved.