在Npoi中打开.xlsx文件

时间:2013-11-07 00:52:54

标签: c# npoi

我正在尝试使用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)。

感谢。

5 个答案:

答案 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