Я смог успешно открыть файл, используя 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, но я боюсь, что TheGateKeeper прав: долгий путь.
Я должен искать OpenXML :(
Пожалуйста, попробуйте последнюю версию NPOI: NPOI 2.0 RC. Вот ссылка: https://npoi.codeplex.com/releases/view/112932