Consegui abrir o arquivo com sucesso usando o EPPLUS, outra biblioteca do Excel. Eu ainda uso npoi para arquivos .xls, mas para .xlsx, acho que tem um longo caminho a percorrer.
Pergunta
Estou tentando abrir um arquivo .xlsx usando o npoi, mas ele continua travando com o seguinte erro:
1 is not a supported code page.
Parameter name: codepage
Meu código é muito simples:
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);
}
}
O erro acontece ao tentar criar a pasta de trabalho. Eu tentei também usar o fluxo, como:
myWorkbook = new XSSFWorkbook(fs);
Alguém sabe o que está errado? Não consigo encontrar um exemplo adequado na rede para lidar com arquivos .xlsx. Estou processando a versão mais recente (2.0.1).
Obrigado.
Solução 4
Outras dicas
ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
...
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(fs);
funciona para mim... ;)
Eu tenho usado a fábrica da pasta de trabalho sem problemas. Ele detectará se o arquivo é XLS ou XLSX e retornará o objeto apropriado para você. Observe que esta é a versão 2.06.
Uma amostra rápida:
_fileStream = new FileStream(filenamePath, FileMode.Open, FileAccess.Read);
_currentWorksheet = _workbook.GetSheetAt(0);
_workbook = WorkbookFactory.Create(_fileStream);
_fileStream.Close();
Fui usuário do Apache Poi na última década e pensei que NPOI era tão bom quanto seu pai Java, mas receio que TheGatekeeper esteja certo: um longo caminho a percorrer.
Eu tenho que procurar o Openxml :(
Experimente a versão mais recente do NPOI: NPOI 2.0 RC. Aqui está o link: https://npoi.codeplex.com/releases/view/112932