Снимок экрана выглядит как содержимое файла xlsx
. Файл xlsx
представляет собой zip-пакет, содержащий файлы XML. Различные пути к XML очень сильные признаки. Байт PK
тоже, но сначала я увидел docProps.xml
.
Сам код имеет серьезную проблему - он генерирует содержимое файла Excel до , запрашивая формат. Учитывая, что формат xls
устарел 13 лет назад, единственным разумным значением по умолчанию является использование xlsx
. Если файл xlsx
сохранен как xls
, Excel будет жаловаться. В моем случае, однако, он смог загрузить файл.
Похоже, код использует пакет Exportable . Примеры в репозитории Github показывают, как указать формат. Помимо MemoryStream Export()
, в библиотеке также есть Export (строковый путь) , который записывает в файл. Исходный код показывает, что Export(string)
выбирает формат на основе расширения и выбрасывает, если оно недопустимо.
Это означает, что код можно уменьшить до:
IExportEngine engine = new ExcelExportEngine();
engine.AddData(productListExport);
var saveFileDialog1 = new SaveFileDialog(){
Filter = "Excel files (*.xls or .xlsx)|.xls;*.xlsx",
Title = "Export product list to Excel"
}
saveFileDialog1.ShowDialog();
if (saveFileDialog1.FileName != "")
{
var path = Path.GetFullPath(saveFileDialog1.FileName);
engine.Export(path);
}
Я бы такжепредлагаем избавиться от опции xls
тоже. Дело не только в том, что его заменили 13 лет назад. Формат не был четко определен для начала, поэтому у библиотек всегда возникают проблемы с тем же выводом, как в Excel. Такие службы, как Google Sheets или Office Online, работают только с xlsx
. Вы должны заплатить , чтобы получить xls
поддержку. Размер файла тоже намного меньше.