Я загружаю файл 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.

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

0
XamDev 22 Окт 2018 в 15:59

2 ответа

Лучший ответ

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

Вот как я просто поступаю с EPPLUS:

using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(fileName), "password"))
{}
3
DanB 22 Окт 2018 в 13:11

Когда я попытался загрузить файл Excel, он показал ошибку кода: «Файл не является допустимым файлом пакета. Если файл зашифрован, укажите пароль в конструкторе».

Но мой файл Excel не был зашифрован и не защищен паролем.

Я нахожу решение, используя try catch, как будто я только что открыл свой файл Excel, а затем пытаюсь сохранить этот файл из формата .xls в .xlsx.

После этого загрузка файла прошла успешно, а библиотека EPPlus dll не выдала никаких ошибок и работает нормально!

0
Rejwanul Reja 4 Дек 2019 в 10:39
52929999