Как получить стоимость от объединенных ячеек в использовании документа Excel OpenXML и C#

У меня есть проблема с объединенными ячейками. Если у меня есть стоимость в первой клетке (B3), и эта клетка слита с клетками некоторых других (например, C3, D3, E3, F3, F4) - в документе I Excel видят только одну стоимость. Здорово, но я хотел бы получить от моей функции GetCellValue ту же самую стоимость B3, когда я прошу C3, D3, E3, стоимость F3.

Я предполагаю, что необходимо найти весь список объединенных ячеек и прочитать стоимость от первой - но как сделать это использование OpenXml?

    public string GetCellValue(char ch, int y)
    {
        WorksheetPart wsPart = GetWorksheetPart(_sheetName);
        var addressName = new StringValue(ch + "" + y);

        Cell cell = wsPart.Worksheet.Descendants().
            Where(c => c.CellReference.Value == addressName).FirstOrDefault();

        if (cell == null)
            return null;

        return cell.InnerText;
    }

ОБНОВЛЕНИЕ:

Я нашел частичное решение (находящий слитые имена столбцов в OpenXML):

        List mergeCells;
        WorksheetPart wsPart = GetWorksheetPart(_sheetName);
        if (wsPart.Worksheet.Elements().Count() > 0)
        {
            mergeCells = wsPart.Worksheet.Elements().ToList();
            string cells = mergeCells[0].OuterXml;
        }
2
nl ja de
клетка. MergeArea должен дать вам объект клетки для B3, даже если клетка - C3. (По крайней мере, that' s, что объектная модель позволяет в VBA, не уверенном в C# как с последним вопросом;-))
добавлено автор Peter Albert, источник

1 ответы

if (wsPart.Worksheet.Elements().Count() > 0)
{
     MergeCells mergeCells = wsPart.Worksheet.Elements().First();
     foreach (MergeCell mergeCell in mergeCells)
     {
        //mergeCell.
     }
}
2
добавлено
Как может я немецкое количество объединенной ячейки? Например, если объединенные ячейки A3:D3, слитое количество должно быть 4 (A3, B3, C3, D3)
добавлено автор barteloma, источник
Microsoft Stack Jobs
Microsoft Stack Jobs
1 788 участник(ов)

Work & freelance only Microsoft Stack. Feed https://t.me/Microsoftstackjobsfeed Чат про F#: @Fsharp_chat Чат про C#: @CSharpChat Чат про Xamarin: @xamarin_russia Чат общения:@dotnettalks

Microsoft Developer Community Chat
Microsoft Developer Community Chat
584 участник(ов)

Чат для разработчиков и системных администраторов Microsoft Developer Community. __________ Новостной канал: @msdevru __________ Баним за: оскорбления, мат, рекламу, флуд, флейм, спам, NSFW контент, а также большое количество оффтоп тем. @banofbot