У меня возникла странная проблема при экспорте файла Excel на Linux с использованием EPPlus версии 4.5.3.3
.
Проблема в том, что при создании содержимого CSV и его использовании content для создания файла excel, весь результат попадает в первую строку таблицы excel (с использованием Libre-Office в Ubuntu). Это происходит только на Linux (протестировано Ubuntu и Debian), но не на Windows. Еще одна странность заключается в том, что когда я использую не CSV-контент для создания файла excel, а коллекцию, он работает без проблем. К сожалению, в этом случае нет возможности использовать настраиваемые заголовки.
Код для создания CSV:
private static string GenerateCsv()
{
var header = $"{nameof(Menu.Main)}{Delimiter}{nameof(Menu.Desert)}";
var builder = new StringBuilder();
builder.AppendLine(header);
foreach (var menu in Menus)
{
var row = $"{menu.Main}{Delimiter}{menu.Desert}";
builder.AppendLine(row);
}
return builder.ToString();
}
Код для создания файла Excel:
var csv = GenerateCsv();
using var pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Sheet1");
var format = new ExcelTextFormat
{
DataTypes = new[]
{
eDataTypes.String, eDataTypes.String
},
Delimiter = Delimiter.First(),
Encoding = new UTF8Encoding(),
};
using var range = ws.Cells[1, 1];
range.LoadFromText(csv, format);
var bytes = pck.GetAsByteArray();
return this.File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "menus.xlsx", true);
Полный образец можно клонировать из этого github-репозитория . Если вы запускаете его на windows, вы увидите, что он работает нормально.
Я действительно много чего пробовал, а также попытался изменить разделитель с ;
на ,
, ввел квалификатор текста и что нет, но, похоже, не могу сделать это работает.
Любая помощь будет принята с благодарностью!