Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.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/solr/3.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# 尝试使用ePlus读取Excel文件在服务器上工作,但不能通过浏览器_C#_Asp.net_.net_Excel_Epplus - Fatal编程技术网

C# 尝试使用ePlus读取Excel文件在服务器上工作,但不能通过浏览器

C# 尝试使用ePlus读取Excel文件在服务器上工作,但不能通过浏览器,c#,asp.net,.net,excel,epplus,C#,Asp.net,.net,Excel,Epplus,当我发布我的项目并在服务器上运行它时,它工作了。EPPlus找到了所有4个工作表,对它们进行了迭代,并将我的数据上传到SQL 但当我通过浏览器或同事浏览器运行它时,它会显示0个工作表 知道为什么会这样吗?在这一点上,代码没有太多内容,但这是其中的一部分: using (ExcelPackage package = new ExcelPackage(new FileInfo(strFile))) { if (package.Workbook.Worksheets.Count <= 0

当我发布我的项目并在服务器上运行它时,它工作了。EPPlus找到了所有4个工作表,对它们进行了迭代,并将我的数据上传到SQL

但当我通过浏览器或同事浏览器运行它时,它会显示0个工作表

知道为什么会这样吗?在这一点上,代码没有太多内容,但这是其中的一部分:

using (ExcelPackage package = new ExcelPackage(new FileInfo(strFile)))
{
    if (package.Workbook.Worksheets.Count <= 0)
        strError = "Your Excel file does not contain any work sheets";
    else
    {
        foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
        {
使用(ExcelPackage package=newexcelpackage(newfileinfo(strFile)))
{

如果(package.Workbook.Worksheets.CountEPPlus可以将文件加载到内存中。您只是没有这样做。我认为如果您这样做,从文件系统读取文件时就不太可能遇到问题。您可以将上载的文件转换为字节数组,而不必首先将其作为文件,但在我的示例中,我正在打开一个现有文件。如果您提供关于如何上传文件的代码,我可以更新我的示例

byte[] file = File.ReadAllBytes(@"C:\file.xlsx");
using (MemoryStream ms = new MemoryStream(file))
using (ExcelPackage package = new ExcelPackage(ms))
{
    if (package.Workbook.Worksheets.Count == 0)
        strError = "Your Excel file does not contain any work sheets";
    else
    {
        foreach (ExcelWorksheet worksheet in package.Workbook.Worksheets)
        {

工作版本在服务器上,但也来自浏览器?文件已经在服务器上了?非工作版本是通过浏览器上载的文件?您是否检查了该文件是否已正确上载?@TimSchmelter是的,它是通过服务器上的浏览器上载的,并且文件在服务器上。我将再次检查以确保文件已上载上传正确,但如果不正确,EPPlus通常会抛出错误。
package.Workbook.Worksheets.Count
将永远不会小于0。因此,您只需测试它是否等于0。我知道这与您的要求无关,只是一个观察。@mason是的。这只是一个习惯。@TimSchmelter我刚刚试着检查了包。File.Length属性查看上载后文件的大小。但它引发了一个异常,表示找不到该文件。我正在使用DevXPress控件上载该文件。它显示的文件路径是“'C:\fakepath\”我猜ePlus不会将文件加载到内存中,而是需要一个到物理路径的固定连接。@SatishKumarsonker然后您需要提出一个新问题并提供一个新的解决方案。