OpenXML вставляет текст в заданный столбец подряд - PullRequest
0 голосов
/ 14 марта 2019

Как вставить строковое значение в заданную ячейку с определенным адресом в OpenXML? Например: я хочу вставить «Hello World» в столбец «AC» моей таблицы Excel. У меня есть список словаря с данными строки Excel, и я делаю, как показано ниже.

SheetData sheetData = worksheetPart.Worksheet.GetFirstChild<SheetData>();
        int rowindex = 2;
        foreach (Dictionary<string,string> _row in _ExcelRows)
        {
            Row row = new Row();
            row.RowIndex = (uint)rowindex;
            sheetData.Append(row);
            foreach (KeyValuePair<string,string> pair in _row)
            {
                string CellAddressForCurrentAttribute = string.Empty;
                if (_ExcelToCoeusMap.ContainsValue(pair.Key))
                {
                    KeyValuePair<string, string> kvp = _ExcelToCoeusMap.Where(x => x.Value == pair.Key).FirstOrDefault();
                    if (_ExcelColumnsAddressMap.ContainsValue(kvp.Key))
                        CellAddressForCurrentAttribute = _ExcelColumnsAddressMap.Where(y => y.Value == kvp.Key).FirstOrDefault().Key;

                    Cell cell = row.Elements<Cell>().Where(c => c.CellReference.Value.Equals(CellAddressForCurrentAttribute,StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault();
                    cell.CellValue = new CellValue(pair.Value);
                }
            }
            rowindex++;

Мои строки 1 и 2 будут иметь некоторую информацию заголовка, а строки данных начинаются с 3 (индекс 2) Я правильно заполняю адрес ячейки в CellAddressForCurrentAttribute, но когда нажимаю row.Elements<Cell>().Where(c => c.CellReference.Value.Equals(CellAddressForCurrentAttribute,StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); его возвращение null. Не уверен, что мне здесь не хватает

...