Создание документа Excel в виде вложения в список sharepoint - PullRequest
0 голосов
/ 12 августа 2010

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

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

  • проверено CreateContentRow (index, item) в отдельном консольном приложении (работает)
  • проверил, если что-то не так с получением информации из других списков (работает)
  • попытка сохранения в библиотеке документов (файл сохраняется без содержимого)
  • попытался открыть документ 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?

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

1 Ответ

0 голосов
/ 13 августа 2010

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

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

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

...