我正在使用 ExcelLibrary 生成动态 Excel 工作表。效果非常好。
代码
//create new xls file
string file = Server.MapPath("Discussion_Board_Report.xls");
Workbook workbook = new Workbook();
Worksheet worksheet = new Worksheet("Report");
worksheet.Cells[0, 0] = new Cell("COMM 226 Case Discussions Report");
worksheet.Cells[4, 0] = new Cell("Student ID");
worksheet.Cells[4, 1] = new Cell("User Name");
worksheet.Cells[4, 2] = new Cell("Case 1");
worksheet.Cells[4, 3] = new Cell("Case 2");
worksheet.Cells[4, 4] = new Cell("Case 3");
worksheet.Cells[4, 5] = new Cell("Topics");
worksheet.Cells[4, 6] = new Cell("Replies");
workbook.Worksheets.Add(worksheet);
workbook.Save(file);
问题
此代码的问题是,它将文件保存在服务器中。我无法在 C://中保存文件,因为 Windows 希望允许我在未经用户许可的情况下保存!我希望用户选择自己的文件路径。如何提示“另存为”对话框?
最佳答案
看起来您正在使用 EPPlus,它在 ExcelPackage 对象上有一个 Stream 属性,我相信您可以使用它来写入响应流。我添加了一些与我过去用于下载文件的代码类似的代码。
然后,我将此逻辑放入我链接到的页面的页面加载中。
ExcelPackage package = new ExcelPackage();
ExcelWorksheet worksheet = package.Workbook.Worksheets.Add("Name Here");
///worksheet logic
var msArray = package.Stream;
var response = HttpContext.Current.Response;
response.Clear();
response.ClearHeaders();
response.ContentType = "application/vnd.ms-excel";
response.AddHeader("Content-Disposition", "attachment; filename={0}.xls".FormatWith(reportName));
response.AddHeader("Content-Length", msArray.Length.ToString());
response.OutputStream.Write(msArray, 0, msArray.Length);
response.Flush();
response.End();
关于c# - 如何在 Asp.net 2.0 C# 中显示另存为对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199905/