Я загружаю файл 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.
Любая помощь по этому вопросу приветствуется!
2 ответа
Это файл XLS или XLSX? EPplus не может работать с файлами XLS.
Вот как я просто поступаю с EPPLUS:
using (ExcelPackage xlPackage = new ExcelPackage(new FileInfo(fileName), "password"))
{}
Когда я попытался загрузить файл Excel, он показал ошибку кода: «Файл не является допустимым файлом пакета. Если файл зашифрован, укажите пароль в конструкторе».
Но мой файл Excel не был зашифрован и не защищен паролем.
Я нахожу решение, используя try catch, как будто я только что открыл свой файл Excel, а затем пытаюсь сохранить этот файл из формата .xls в .xlsx.
После этого загрузка файла прошла успешно, а библиотека EPPlus dll не выдала никаких ошибок и работает нормально!
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.