سؤال

لدي بعض المشكلات إضافة مستند 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؟

عندما أقوم بتصحيح الخلايا والصفوف إلى sheetdata ، لكنها لا يتم حفظها. أي أفكار حول كيفية إصلاح هذا ؟

هل كانت مفيدة؟

المحلول

من أجل حفظ المحتوى الذي احتاجه لإضافة بيانات حفظ.

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

عندما أضفت الخطوط المذكورة أعلاه قبل إضافة مرفق كل شيء يعمل كما ينبغي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top