تمكنت من فتح الملف بنجاح باستخدام Epplus ، مكتبة Excel أخرى. ما زلت أستخدم NPOI لملفات .xls ولكن لـ .xlsx أعتقد أنه أمامه طريق طويل.
سؤال
أحاول فتح ملف .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
نصائح أخرى
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