2013-11-07 16 views
0

Я пытаюсь открыть файл .xlsx, используя Npoi, но он продолжает врезаться со следующей ошибкой:Открытие .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).

Спасибо.

ответ

0

Мне удалось открыть файл с помощью EPPlus, другой библиотеки Excel. Я все еще использую NPOI для файлов .xls, но для .xlsx. Мне кажется, что это долгий путь.

1

Я был пользователем Apache POI в течение последнего десятилетия, и я думал, что NPOI так же хорош, как и его отец, но я боюсь, что TheGateKeeper прав: долгий путь.

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

2

Я использую Workbook Factory без проблем. Он определит, является ли файл XLS или XLSX и вернуть соответствующий объект для вас. Обратите внимание, что это версия 2,06 .

быстрый образец:

_fileStream = new FileStream(filenamePath, FileMode.Open, FileAccess.Read); 
_currentWorksheet = _workbook.GetSheetAt(0); 
_workbook = WorkbookFactory.Create(_fileStream); 
_fileStream.Close(); 
4
ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage; 
... 
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read); 
XSSFWorkbook workbook = new XSSFWorkbook(fs); 

это работает для меня ...;)

Смежные вопросы