0

在自定义列表中添加 Excel 文档作为附件时,我遇到了一些问题。我制作了一个 eventreceiver,它从其他列表中收集数据并将数据放入 excel 文档中。

我试图做些什么来纠正这个问题:

  • 在单独的控制台应用程序中测试了 CreateContentRow(index, item)(有效)
  • 检查从其他列表中获取信息是否有问题(作品)
  • 尝试保存到文档库(文件保存时没有内容)
  • 尝试打开 xlsx 文档以检查 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 ,我应该如何保存文件有很大的不同吗?

当我调试单元格和行被添加到工作表数据,但它没有得到保存。有想法该怎么解决这个吗 ?

4

1 回答 1

0

为了保存内容,我需要添加保存语句。

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

当我在添加附件之前添加上面的行时,一切正常。

于 2010-08-13T10:23:00.413 回答