Member 1116115 Ответов: 2

Формат и расширение файла не совпадают.


Формат файла и его расширение filename.xls не совпадают. Файл может быть поврежден или небезопасен. Если вы не доверяете его источнику, не открывайте его. Ты все равно хочешь его открыть?.
Я использую MVC. Привязка данных происходит в файле .CSHTML

как избежать предупреждения ?

Что я уже пробовал:

Response.AddHeader("content-disposition", "attachment; filename=DemoExcel.xls");  
Response.ContentType = "application/ms-excel";

2 Ответов

Рейтинг:
2

OriginalGriff

Мы ничем не можем помочь: вам нужно посмотреть на файл, его содержимое, и если вы можете открыть его в самом Excel.

Скорее всего, данные файла, которые вы отправляете или храните, не являются допустимым файлом XLS (например, это может быть XLSX, или вы можете хранить его неправильно.

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

Извините, но мы ничего не можем сделать для вас!


Рейтинг:
1

MadMyche

Проблема не в коде, который вы предоставили, и не в использовании MVC; проблема, похоже, заключается в содержании и способе его создания.

Если вы просто читаете файл из каталога и отправляете его в виде потока, вам нужно будет убедиться, что этот файл является допустимым XLS - файлом с расширением XLS. Если это файл XLSX, вам нужно будет соответственно изменить теги заголовка.

Если вы программно создаете этот документ Excel из данных (он же экспорт), вам необходимо проверить, что вы создаете настоящий документ Excel и что тип документа Excel соответствует заголовкам.
Вот несколько способов, которыми это можно сделать:
6 простых способов экспорта данных в Excel в блогах C# | Syncfusion[^]

Наконец, если у вас возникли проблемы с созданием настоящего документа Excel, вы можете просто вернуться к отправке данных в виде очерченного (обычного) текстового файла, такого как CSV. Для этого не требуется программа (например, Excel), чтобы открыть его, но Excel является открывателем по умолчанию для него