Чтение защищенных паролем Excel с помощью epplus в C # - PullRequest
0 голосов
/ 22 октября 2018

Я загружаю файл Excel с паролем, используя библиотеку epplus.Часть загрузки работает нормально.

public ActionResult DownloadExcel()
{

string sFileName = string.Empty;

using (ExcelPackage package = projectBL.DownloadExcel(ID, id1, id3, id4, id5))
   {
     System.Net.Mime.ContentDisposition cd = new System.Net.Mime.ContentDisposition
        {
            FileName = package.File.Name,
        };

        Response.Headers.Add("Content-Disposition", cd.ToString());

        return File(package.GetAsByteArray("password"), "application/vndopenxmlformats-officedocument.spreadsheetml.sheet");

    }
}

Но всякий раз, когда я пытаюсь загрузить этот защищенный паролем файл, он выдает сообщение об ошибке ниже

Файл не является допустимым файлом пакета,Если файл зашифрован, укажите пароль в конструкторе.

Итак, я решил вышеуказанную ошибку, предоставив пароль, необходимый для чтения файла.Ниже приведен код для того же самого.

public ActionResult UploadExcel()
{
  if (Request.Form.Files != null && Request.Form.Files.Count > 0)
   {
     var fileObject = Request.Form.Files[0];

     string fileName = ContentDispositionHeaderValue.Parse(fileObject.ContentDisposition).FileName.Trim('"');

     var Stream = fileObject.OpenReadStream();

     ExcelPackage package = new ExcelPackage(Stream,"password");

     projectBL.SaveData(package);

     return Json("Records Saved Succesfully.");
    }
}

Однако после предоставления пароля я все еще не могу прочитать / загрузить файл Excel из-за ошибки ниже

Потокдолжен быть прочитан / записан

Так что мой вопрос, как я могу прочитать файл, защищенный паролем, используя Stream.Я использую этот код в веб-API.

Любая помощь по этому вопросу приветствуется!

1 Ответ

0 голосов
/ 22 октября 2018

Это файл XLS или XLSX?EPplus не может работать с файлами XLS.

Вот как я просто делаю с EPPLUS:

using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(fileName), "password"))
{}
...