我正在編寫一個程序,該程序必須在客戶機上創建一個excel文件,然後在保存並更新它之後,我需要再次導入並應用對我的數據庫的更改。它的導出位工作正常,但是當我從Web應用程序導入時,我的工作簿中收到零個工作表。如果我在我的開發機器上運行它,即網站與文件位於同一臺機器上運行,那麼它工作正常。使用EPPlus打開客戶端Excel文件
我的代碼如下:
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;
我已經證實,該代碼獲得最後一個標籤更新,還告訴我有工作簿中的零工作表,但重要的是,工作簿本身不爲空。
當我們創建使用下面的代碼的出口,該數據流從服務器傳輸到客戶端 - 我想知道如果事情扭轉它需要:
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("content-disposition", "attachment; filename=Products.xlsx");
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();
幾個問題:在第二步中上傳的文件是否是同一個文件?因爲在第一步中,用戶可以使用不同的文件名來保存到本地客戶機。然後上傳一個不同的文件...第一步導出的文件是否正確生成?也許該文件首先有空工作表。這將解釋非空的工作簿,但空工作表的情況。 –
嗨,文件被創建服務器端,然後使用上面的響應代碼流式傳輸到用戶機器。然後他們選擇要上傳的文件,這是失敗的地方。從我所做的研究中可以看出,該文件被假定爲在服務器上,並從那裏打開,而該文件不存在。當文件名不存在時,ExcelPackage的默認設置是創建一個新的空白工作簿,我認爲它解釋了零工作表。 – Andrew