我正在加载现有的 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");
}
问题是我没有调用
package.Save()
或 package.SaveAs(outputStream)
,所以 package.Stream
不是一个完整的、最终确定的 Excel 文件。