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.
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.
Soluzione 4
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