Создание документа Excel в качестве вложения в списке SharePoint

StackOverflow https://stackoverflow.com/questions/3468663

Вопрос

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

Что я пытался сделать, чтобы исправить проблему:

  • Проверено CreateContentRow (индекс, элемент) в отдельном консольном приложении (работает)
  • проверено, если есть что-то не так с получением информации из других списков (работает)
  • Пробовал сохранение в библиотеке документов (файл сохраняется без контента)
  • Пытался открыть документ XLSX для SE, если с XML что-то не так (не добавлено пользовательских XML).

Код работает совсем хорошо, но документ сохраняется, но он идентичен шаблону, не добавлен контент.

using (var memory = new MemoryStream())
                {

                    var binary = template.OpenBinary();
                    memory.Write(binary, 0, binary.Length);

                    using (var document = SpreadsheetDocument.Open(memory, true))
                    {
                        var workbookPart = document.WorkbookPart;

                        var worksheetparts = workbookPart.WorksheetParts;

                        var worksheetpart = worksheetparts.FirstOrDefault();

                        var sheetData = worksheetpart.Worksheet.GetFirstChild<SheetData>();

                        var index = 2;
                        foreach (var item in items)
                        {
                            var row = CreateContentRow(index, item);
                            index++;

                            sheetData.AppendChild(row);
                        }
                        properties.ListItem.Attachments.Add("name" + string.Format("{0:yyyy-MM-dd_HHmmss}", DateTime.Now) + ".xlsx", memory.ToArray());
                        properties.ListItem.Update();
                    }
                }

Я использую тот же подход к другому списку, в котором я генерирую документы .docx там, что он работает нормально. Есть ли большая разница в том, как я должен сохранить документ в зависимости от того, если его .xlsx или .docx?

Когда я отладки клетки и ряды добавляются к листедату, но он не сохраняется. Есть какие нибудь идеи как это починить ?

Это было полезно?

Решение

Для того, чтобы сохранить контент, мне нужно было добавить операторы сохранения.

wspart.Worksheet.Save();
document.WorkbookPart.Workbook.Save();

Когда я добавил строки выше, прежде чем добавить аттасус, все работало все, что она должна.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top