إدراج ورقة عمل مع Open XML - "... محتوى غير قابل للقراءة ..."

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

  •  29-09-2019
  •  | 
  •  

سؤال

عندما أتابع هذا البرنامج التعليمي:

http://msdn.microsoft.com/en-us/library/cc881781.aspx

لفتح مستند Excel وأدخل ورقة عمل فارغة والنتيجة النهائية هي رسالة تخبرني "Excel تم العثور على محتوى غير قابل للقراءة في ... هل تريد استرداد محتويات هذا المصنف ...". إذا استعادت جميع الأوراق المدرجة فارغة (حتى لو قمت بإضافة محتوى برمجي)

بعد إعادة تسمية XLSX إلى .zip وفحصه ، يوضح أنه تم إنشاء أوراق العمل ، وإضافة المحتوى.

أي شخص لديه أي مشاكل مماثلة؟ قد يكون شيئًا مع عدم إنشاء علاقات بين الأجزاء التي تم إنشاؤها حديثًا ...

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

المحلول

تعني رسالة الخطأ هذه أن XML التي تشكل مستند Excel الخاص بك لا تتوافق مع مخطط XML وغير صالح. يمكنك استخدام ال افتح أداة إنتاجية XML SDK 2.0 لمعرفة أين توجد المشكلة.

قمت أيضًا بنسخ الكود من أسفل الرابط الخاص بك وحصلت على العمل كما قال كريس في تعليقه. هل يبدو رمزك هكذا أدناه؟

// Open the document for editing.
using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true)) 
{
    // Add a blank WorksheetPart.
    WorksheetPart newWorksheetPart = 
       spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
    newWorksheetPart.Worksheet = new Worksheet(new SheetData());

    Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
    string relationshipId = 
       spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);
    // Get a unique ID for the new worksheet.
    uint sheetId = 1;
    if (sheets.Elements<Sheet>().Count() > 0)
    {
        sheetId = 
        sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
    }

    // Give the new worksheet a name.
    string sheetName = "Sheet" + sheetId;

    // Append the new worksheet and associate it with the workbook.
    Sheet sheet = new Sheet() 
    { Id = relationshipId, SheetId = sheetId, Name = sheetName };
    sheets.Append(sheet);

    string docName = @"C:\Users\Public\Documents\Sheet7.xlsx";
    InsertWorksheet(docName);
}

// Given a document name, inserts a new worksheet.
public static void InsertWorksheet(string docName)
{
    // Open the document for editing.
    using (SpreadsheetDocument spreadSheet = SpreadsheetDocument.Open(docName, true))
    {
        // Add a blank WorksheetPart.
        WorksheetPart newWorksheetPart = spreadSheet.WorkbookPart.AddNewPart<WorksheetPart>();
        newWorksheetPart.Worksheet = new Worksheet(new SheetData());

        Sheets sheets = spreadSheet.WorkbookPart.Workbook.GetFirstChild<Sheets>();
        string relationshipId = spreadSheet.WorkbookPart.GetIdOfPart(newWorksheetPart);

        // Get a unique ID for the new worksheet.
        uint sheetId = 1;
        if (sheets.Elements<Sheet>().Count() > 0)
        {
            sheetId = sheets.Elements<Sheet>().Select(s => s.SheetId.Value).Max() + 1;
        }

        // Give the new worksheet a name.
        string sheetName = "Sheet" + sheetId;

        // Append the new worksheet and associate it with the workbook.
        Sheet sheet = new Sheet() { Id = relationshipId, SheetId = sheetId, Name = sheetName };
        sheets.Append(sheet);
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top