openxml - вставка строки, движущихся других

Я использую openxml для создания отчета Excel. openxml управляет на шаблоне файлом Excel с помощью названный диапазонами.

Клиент требует общей строки в конце списка строк. Походит на разумный запрос!!

Однако таблица данных, которую я возвращаю из дб, может содержать любое количество строк. Используя шаблонные строки и 'InsertBeforeSelf', моя общая строка становится переопределенной.

Мой вопрос, с помощью openxml, как я могу вставить строки в электронную таблицу, заставив общую строку быть быть спущенным каждый раз, когда строка вставляется?

Отношения...

5
задан bmoyno 24 June 2010 в 14:56
поделиться

1 ответ

Предполагая, что вы используете SDK 2.0, я сделал что-то похожее, используя эту функцию:

private static Row CreateRow(Row refRow, SheetData sheetData)
    {
        uint rowIndex = refRow.RowIndex.Value;
        uint newRowIndex;
        var newRow = (Row)refRow.Clone();

        /*IEnumerable<Row> rows = sheetData.Descendants<Row>().Where(r => r.RowIndex.Value >= rowIndex);
        foreach (Row row in rows)
        {
            newRowIndex = System.Convert.ToUInt32(row.RowIndex.Value + 1);

            foreach (Cell cell in row.Elements<Cell>())
            {
                string cellReference = cell.CellReference.Value;
                cell.CellReference = new StringValue(cellReference.Replace(row.RowIndex.Value.ToString(), newRowIndex.ToString()));
            }

            row.RowIndex = new UInt32Value(newRowIndex);
        }*/

        sheetData.InsertBefore(newRow, refRow);
        return newRow;
    }

Я не уверен, как вы это делали с InsertBeforeSelf раньше, так что, возможно, это не очень хорошее улучшение, но это сработало для меня. Я думал, что вы могли бы просто использовать свою итоговую строку в качестве справочной. (Закомментированная часть предназначена для тех случаев, когда у вас были строки после ссылочной строки, которые вы хотели сохранить. Я внес некоторые изменения, но в основном это происходит из этого потока: http://social.msdn.microsoft.com/Forums / en-US / oxmlsdk / thread / 65c9ca1c-25d4-482d-8eb3-91a3512bb0ac )

Поскольку он возвращает новую строку, вы можете использовать этот объект для редактирования значений ячеек с данными из базы данных. Я надеюсь, что это хоть немного поможет тем, кто пытается это сделать ...

7
ответ дан 14 December 2019 в 01:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: