EPPlus - .NET - 在 Excel 包中加载时保留 VBA 项目

问题描述 投票:0回答:1

我正在加载现有的 xlsm(启用宏)文件,用数据填充它,并输出要由用户下载的流。 当我这样做时,Excel 说“无法打开文件,因为文件格式或文件扩展名无效。请验证文件是否已损坏,并且文件扩展名是否与文件格式匹配。”

如果我只是拉出现有的 xlsm 文件并将其从控制器中流出,Excel 就可以打开它。 仅当我通过 EPPlus 运行它时才会发生“损坏”。

public Stream PopulateTemplateWithData()
{
    using var package = new ExcelPackage(_templateStream);

    var propName = package.Workbook.Names[PROP];
    var propWorksheet = propName.Worksheet;
    var propCell = propWorksheet.Cells[propName.Start.Row, propName.Start.Column];
    propCell.Value = _inputData.Prop;

    return package.Stream;
}

// Controller method
public IActionResult DownloadPopulatedWorkbook()
{
    var stream = PopulateTemplateWithData();
    return File(stream, "application/vnd.ms-excel.sheet.macroenabled.12", "example.xlsm");
}
excel asp.net-mvc epplus
1个回答
0
投票

问题是我没有调用

package.Save()
package.SaveAs(outputStream)
,所以
package.Stream
不是一个完整的、最终确定的 Excel 文件。

© www.soinside.com 2019 - 2024. All rights reserved.