gpt4 book ai didi

asp.net-mvc-2 - 用于 IE 的 MVC 中的 Excel 导出不允许打开多个窗口

转载 作者:行者123 更新时间:2023-12-04 06:29:06 25 4
gpt4 key购买 nike

这是我们从 ActionResult 继承的 ExcelExport 操作:

public class ExcelResult<Model> : ActionResult
{
string _fileName;
string _viewPath;
Model _model;
ControllerContext _context;

public ExcelResult(ControllerContext context, string viewPath, string fileName, Model model)
{
this._context = context;
this._fileName = fileName;
this._viewPath = viewPath;
this._model = model;
}
protected string RenderViewToString()
{
if (!_viewPath.EndsWith(".aspx"))
{
return _viewPath;
}
using (var writer = new StringWriter())
{
var view = new WebFormView(_context, _viewPath);
var vdd = new ViewDataDictionary<Model>(_model);
var viewCxt = new ViewContext(_context, view, vdd, new TempDataDictionary(), writer);
viewCxt.View.Render(viewCxt, writer);
return writer.ToString();
}
}
void WriteFile(string content)
{
HttpContext context = HttpContext.Current;
context.Response.Clear();
context.Response.AddHeader("content-disposition", "attachment;filename=\"" + _fileName + "\"");
context.Response.Charset = "";
//context.Response.Cache.SetCacheability(HttpCacheability.NoCache);
context.Response.ContentType = "application/ms-excel";
context.Response.Write(RemoveImages(content));
context.Response.End();
}

public override void ExecuteResult(ControllerContext context)
{
string content = this.RenderViewToString();
this.WriteFile(content);
}

public static string RemoveImages(string html)
{
StringBuilder retval = new StringBuilder();
using (StringReader reader = new StringReader(html))
{
string line = string.Empty;
do
{
line = reader.ReadLine();
if (line != null)
{
if (!line.StartsWith("<img"))
{
retval.Append(line);
}
}

} while (line != null);
}
return retval.ToString();
}
}

导出工作正常,但仅在 IE 中(在 FF 中有效),如果您导出并选择打开文件而不是保存它,然后立即再次单击导出,它会尝试打开另一个同名文件,因此在您关闭工作文档之前,Excel 不会让您使用。

然而,在 FF 中,名称只是添加一个整数,每次单击导出时都会增加 1。

我必须做什么才能在 IE 中实现相同的功能?

最佳答案

我遇到了同样的问题,开箱即用,您无法做任何事情,因为 IE 和 Excel 就是这样处理的。您也无法识别已打开同名文件。但是您可以使用 JavaScript 或用户 session 来识别用户已经在一个时间跨度内加载了导出,并在服务器端更改此下载的文件名。经过 2 天的搜索和邮寄,这对我有用。

关于asp.net-mvc-2 - 用于 IE 的 MVC 中的 Excel 导出不允许打开多个窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5669171/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com