Получение WorkbookPart из строки - PullRequest
0 голосов
/ 08 октября 2019

Я пишу и расширение для 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;
}

1 Ответ

1 голос
/ 03 ноября 2019

К сожалению, ни один из строго типизированных классов Open XML SDK (например, Workbook, Worksheet, Row) не имеет свойств, указывающих на OpenXmlPart (например, WorkbookPart, * 1006). *) в котором они содержатся или любая другая часть, относящаяся к их непосредственному контейнеру. Если вы не измените свой API другими способами, вам придется передать это WorkbookPart.

...