J'ai pu ouvrir le fichier avec succès à l'aide d'Epplus, une autre bibliothèque Excel. J'utilise toujours NPOI pour les fichiers .xls mais pour .xlsx, je pense qu'il a un long chemin à parcourir.
Ouverture des fichiers .xlsx dans NPOI
Question
J'essaie d'ouvrir un fichier .xlsx à l'aide de NPOI mais il continue de planter avec l'erreur suivante:
1 is not a supported code page.
Parameter name: codepage
Mon code est très simple:
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'erreur se produit en essayant de créer le classeur. J'ai également essayé d'utiliser le flux, comme:
myWorkbook = new XSSFWorkbook(fs);
Quelqu'un sait-il ce qui ne va pas? Je ne trouve pas un exemple approprié sur le net pour traiter avec des fichiers .xlsx. Je poursuis la dernière construction (2.0.1).
Merci.
La solution 4
Autres conseils
ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
...
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(fs);
ça marche pour moi... ;)
J'utilise l'usine de classement sans problèmes. Il détectera si le fichier est XLS ou XLSX et renverra l'objet approprié pour vous. Notez qu'il s'agit de la version 2.06.
Un échantillon rapide:
_fileStream = new FileStream(filenamePath, FileMode.Open, FileAccess.Read);
_currentWorksheet = _workbook.GetSheetAt(0);
_workbook = WorkbookFactory.Create(_fileStream);
_fileStream.Close();
J'ai été utilisateur d'Apache POI depuis la dernière décennie et j'ai pensé que NPOI était aussi bon que son père Java, mais je crains que le gardien soit juste: un long chemin à parcourir.
Je dois chercher OpenXML :(
Veuillez essayer la dernière version NPOI: NPOI 2.0 RC. Voici le lien: https://npoi.codeplex.com/releases/view/112932