سؤال

أحاول فتح ملف .xlsx باستخدام NPOI ولكنه يستمر في الانهيار مع الخطأ التالي:

1 is not a supported code page.
Parameter name: codepage

الكود الخاص بي بسيط للغاية:

OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Excel Workbook|*.xlsx";

DialogResult dr = ofd.ShowDialog();

if (dr == DialogResult.OK)
{
    XSSFWorkbook myWorkbook;

    FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);

    using (fs)
    {
        myWorkbook = new XSSFWorkbook(ofd.FileName);
    }
}

يحدث الخطأ أثناء محاولة إنشاء المصنف. حاولت أيضًا استخدام الدفق ، مثل:

myWorkbook = new XSSFWorkbook(fs);

هل يعلم أحد ما هو الخطأ؟ لا يمكنني العثور على مثال مناسب على الشبكة للتعامل مع ملفات .xlsx. أنا أقاضي أحدث بناء (2.0.1).

شكرًا.

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

المحلول 4

تمكنت من فتح الملف بنجاح باستخدام Epplus ، مكتبة Excel أخرى. ما زلت أستخدم NPOI لملفات .xls ولكن لـ .xlsx أعتقد أنه أمامه طريق طويل.

نصائح أخرى

ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
...
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(fs);

إنه يعمل بالنسبة لي ... ؛)

لقد كنت أستخدم مصنع المصنف بدون مشاكل. سوف يكتشف ما إذا كان الملف هو XLS أو XLSX وإرجاع الكائن المناسب لك. لاحظ أن هذا هو الإصدار 2.06.

عينة سريعة:

_fileStream = new FileStream(filenamePath, FileMode.Open, FileAccess.Read);
_currentWorksheet = _workbook.GetSheetAt(0);
_workbook = WorkbookFactory.Create(_fileStream);
_fileStream.Close();

لقد كنت مستخدم Apache POI على مدار العقد الماضي واعتقدت أن NPOI كان جيدًا مثل والده Java ولكني أخشى أن يكون مرابك على حق: طريق طويل.

لا بد لي من البحث عن openxml :(

يرجى تجربة أحدث إصدار من NPOI: NPOI 2.0 RC. ها هو الرابط الالكتروني: https://npoi.codeplex.com/releases/view/112932

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