使用EPPlus打开客户端Excel文件

我正在编写一个程序,它必须在客户端机器上创build一个excel文件,然后在保存并更新它之后,我需要再次导入它并将更改应用到我的数据库。 它的导出位工作正常,但是当我从Web应用程序导入时,我的工作簿中获得零工作表。 如果我在我的开发机器上运行它,也就是说网站在文件所在的同一台机器上运行,那么它工作的很好。

我的代码如下:

try { Productsfile = new FileInfo(PathandFileName); } catch (Exception ex) { lblStatus.Text = string.Format("Error getting file info {0}", ex.Message); return; } lblStatus.Text += "File Opened succesfully " + Productsfile.FullName + Environment.NewLine; //Open and read file try { using (ExcelPackage datafile = new ExcelPackage(Productsfile)) { ExcelWorkbook wkb = datafile.Workbook; if (wkb != null) { lblStatus.Text += string.Format("The workbook is not null and there are {0} worksheets", wkb.Worksheets.Count) + Environment.NewLine; 

我已经确认代码到达最后的标签更新,这告诉我工作簿中有零个工作表,但重要的是工作簿本身不是空的。

当我们创build导出时,使用了下面的代码,它将数据stream从服务器传输到客户端 – 我想知道是否需要反转它的东西:

 Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; Response.AddHeader("content-disposition", "attachment; filename=Products.xlsx"); Response.BinaryWrite(pck.GetAsByteArray()); Response.End(); 

对,我相信我find了答案:

1)从file upload控制获取文件的详细信息2)将其转换为内存stream3)使用内存stream创build包

代码如下:

 if (FileUpload1.HasFile) { HttpPostedFile file = Request.Files[0]; myLabel.Text = file.FileName; MemoryStream mem = new MemoryStream(); mem.SetLength((int)file.ContentLength); file.InputStream.Read(mem.GetBuffer(), 0, (int)file.ContentLength); ExcelPackage package = new ExcelPackage(mem); ExcelWorksheet worksheet = package.Workbook.Worksheets[1]; myLabel.Text += " " + worksheet.Name; }