簡體   English   中英

使用EPPlus打開客戶端Excel文件

[英]Opening a client-side Excel file using EPPlus

我正在編寫一個程序,該程序必須在客戶端計算機上創建一個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;

我已經確認代碼更新到最新的標簽,這告訴我工作簿中的工作表為零,但重要的是工作簿本身不為null。

當我們創建導出時,使用了以下代碼,該代碼將數據流從服務器傳輸到客戶端-我想知道是否需要逆轉它:

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

是的,我相信已經找到了答案:

1)從文件上傳控件獲取文件詳細信息2)將其轉換為內存流3)使用內存流創建包

代碼如下:

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;

        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM