我正在使用 EPPlus 创建/发送一个文件,如下所示:
using (ExcelPackage package = new ExcelPackage())
{
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Sheet");
... //create file here
Response.Clear();
Response.ContentType = "application/xlsx";
Response.AddHeader("content-disposition", "attachment; filename=" + filename + ".xlsx");
Response.BinaryWrite(package.GetAsByteArray());
Response.End();
}
一切正常,除了文件总是以只读方式返回,我不知道为什么。在“包”对象中,有一个带有 IsReadOnly 字段的文件对象,但该文件对象为空。我预计我没有正确创建 xcel 文件,但这是我弄清楚如何很好地创建文件的唯一方法。最初我使用的是内存流,但这样做时,当 excel 文件大于 50 行时,我遇到了问题。
编辑/更新:所以我通过单击“下载为 Excel 文件”按钮来启动代码块。代码运行,创建文件,并提示用户“您已选择打开:thisismyexcelfile.xlsx,这是一个:XLSX 文件(此处大小)来自:mywebsite。firefox 应该如何处理此文件?” 选择“使用 OpenOffice Calc 打开”后,电子表格将打开并正确显示,但它是只读的。
编辑/更新:我用 OpenOffice 检查了文件属性。在“属性/安全”下有一个“只读打开文件”复选框,但它已被取消选中并禁用。