C# 尝试使用ePlus读取Excel文件在服务器上工作,但不能通过浏览器
当我发布我的项目并在服务器上运行它时,它工作了。EPPlus找到了所有4个工作表,对它们进行了迭代,并将我的数据上传到SQL 但当我通过浏览器或同事浏览器运行它时,它会显示0个工作表 知道为什么会这样吗?在这一点上,代码没有太多内容,但这是其中的一部分: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
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然后您需要提出一个新问题并提供一个新的解决方案。