Вопрос

Я пытаюсь открыть файл .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, но я боюсь, что TheGateKeeper прав: долгий путь.

Я должен искать OpenXML :(

Пожалуйста, попробуйте последнюю версию NPOI: NPOI 2.0 RC. Вот ссылка: https://npoi.codeplex.com/releases/view/112932

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top