我正在尝试使用Npoi打开.xlsx文件,但它一直崩溃,出现以下错误:
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 :(得分:5)
ICSharpCode.SharpZipLib.Zip.ZipConstants.DefaultCodePage = Encoding.Default.CodePage;
...
FileStream fs = new FileStream(ofd.FileName, FileMode.Open, FileAccess.Read);
XSSFWorkbook workbook = new XSSFWorkbook(fs);
它对我有用......;)
答案 1 :(得分: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();
答案 2 :(得分:1)
过去十年我一直是Apache POI用户,我认为NPOI和他的Java父亲一样好,但我担心TheGateKeeper是对的:还有很长的路要走。
我必须寻找OpenXML :(
答案 3 :(得分:0)
我能够使用另一个Excel库EPPlus成功打开文件。我仍然使用NPOI用于.xls文件但是对于.xlsx我认为还有很长的路要走。
答案 4 :(得分:0)
请尝试最新的NPOI版本:NPOI 2.0 RC。这是链接:https://npoi.codeplex.com/releases/view/112932