Domanda

Sto cercando di aprire un file .xlsx usando NPOI ma continua a crash con il seguente errore:

1 is not a supported code page.
Parameter name: codepage

Il mio codice è molto semplice:

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);
    }
}

L'errore si verifica mentre si tenta di creare la cartella di lavoro. Ho provato anche a usare il flusso, come ad esempio:

myWorkbook = new XSSFWorkbook(fs);

Qualcuno sa cosa c'è che non va? Non riesco a trovare un esempio corretto in rete per trattare i file .xlsx. Sto facendo causa all'ultima build (2.0.1).

Grazie.

È stato utile?

Soluzione 4

Sono stato in grado di aprire il file con successo usando Epplus, un'altra libreria Excel. Uso ancora NPOI per i file .xls ma per .xlsx penso che abbia molta strada da fare.

Altri suggerimenti

ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
...
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(fs);

per me funziona... ;)

Ho usato la fabbrica della cartella di lavoro senza problemi. Rileggerà se il file è XLS o XLSX e restituirà l'oggetto appropriato per te. Si noti che questa è la versione 2.06.

Un campione rapido:

_fileStream = new FileStream(filenamePath, FileMode.Open, FileAccess.Read);
_currentWorksheet = _workbook.GetSheetAt(0);
_workbook = WorkbookFactory.Create(_fileStream);
_fileStream.Close();

Sono stato un utente di Apache Poi nell'ultimo decennio e ho pensato che NPOI fosse bravo come suo padre Java, ma temo che Thegatekeeper abbia ragione: una lunga strada da percorrere.

Devo cercare OpenXml :(

Prova l'ultima versione NPOI: NPOI 2.0 RC. Ecco il link: https://npoi.codeplex.com/releases/view/112932

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top