Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用NPOI读取Excel_C#_Xlsx_Xls_Npoi - Fatal编程技术网

C# 使用NPOI读取Excel

C# 使用NPOI读取Excel,c#,xlsx,xls,npoi,C#,Xlsx,Xls,Npoi,我正在尝试使用NPOI读取excel[xls和xlsx],我使用以下代码,但它给出了“无法读取整个标题;读取27字节;读取8KB xls文件时应为512字节 byte[] byteArray = Encoding.UTF8.GetBytes(filepath); MemoryStream stream = new MemoryStream(byteArray); MemoryStream stream1 = new MemoryStream(Encoding.UTF8.G

我正在尝试使用NPOI读取excel[xls和xlsx],我使用以下代码,但它给出了“无法读取整个标题;读取27字节;读取8KB xls文件时应为512字节

    byte[] byteArray = Encoding.UTF8.GetBytes(filepath);
    MemoryStream stream = new MemoryStream(byteArray);
    MemoryStream stream1 = new MemoryStream(Encoding.UTF8.GetBytes(filepath ?? ""));

    NPOI.HSSF.UserModel.HSSFWorkbook hssfwb = default(HSSFWorkbook);
    hssfwb = new NPOI.HSSF.UserModel.HSSFWorkbook(stream1);
    Sheet sheet = hssfwb.GetSheetAt(0);
    DataTable dtinputExcel = new DataTable();

我已经尝试了网络上所有可能的代码来解决这个错误。请指导我阅读和excel[xls/xlsx]任何大小的无错误方法是什么。

问题是
HSSFWorkbook
的构造函数希望有一个包含电子表格文件内容的流,而您正在传递一个包含文件名的
MemoryStream
。您应该使用读取文件并将该流传递给
HSSFWorkbook
构造函数

试着这样做:

IWorkbook hssfwb;
using (FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read))
{
    hssfwb = new HSSFWorkbook(fs);
}

ISheet sheet = hssfwb.GetSheetAt(0);

检查您的文件是否未在oter程序中打开,您可能正在读取锁而不是文件。在读取excel/调用上述代码之前,我已通过编码关闭了excel进程,但它仍会给出错误。检查此链接