在 mvc 中导出到 CSV 不起作用
Export to CSV in mvc not work
我想使用 MVC 将列表导出到 CSV 文件,Jquery。我想将文件写入响应流,但什么也没做。没有出现下载。
下面是我在 .cshtml 中的代码
<button id="btnGenerateCSV">Generate CSV</button>
在 .js 中
$('#btnGenerateCSV').click(function () {
$.post(root + "ClaimInternal/DownloadCsv");
});
在我的控制器中
private string GetCsvString(IList<Area> Area)
{
StringBuilder csv = new StringBuilder();
csv.AppendLine("AreaID,AliasName,Description,BankName");
foreach (Area area in Area)
{
csv.Append(area.AreaID + ",");
csv.Append(area.AliasName + ",");
csv.Append(area.Description + ",");
csv.Append(area.BankName + ",");
csv.AppendLine();
}
return csv.ToString();
}
public void DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
string facsCsv = GetCsvString(data);
// Return the file content with response body.
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "attachment;filename=Area.csv");
Response.Write(facsCsv);
Response.End();
}
}
我也尝试这样做
public FileContentResult DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
JsonResult result = new JsonResult();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
result.Data = data;
string facsCsv = GetCsvString(data);
return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv", "Area.csv");
}
}
我也是这样制作的
public void DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
string facsCsv = GetCsvString(data);
// Return the file content with response body.
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Area.csv");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(facsCsv);
Response.Flush();
Response.End();
}
}
但还是不行.. 没有下载 CSV 出现.. 当我全部工作时,没有错误。
现在我已经有了答案。我像这样更改脚本并且成功了..
var cd = new System.Net.Mime.ContentDisposition
{
FileName = "Area.csv",
Inline = true,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv");
这是通过添加新的 System.Net.Mime.ContentDisposition 来实现的。但我还是不明白为什么。
我能够使用
window.location = "/urlPath?filename=" + filename;
在我的控制器中
filename = filename.ToString();
byte[] fileBytes = System.IO.File.ReadAllBytes(filename);
var response = new FileContentResult(fileBytes, "application/octet-stream");
response.FileDownloadName = "Filename.csv";
return response;
我想使用 MVC 将列表导出到 CSV 文件,Jquery。我想将文件写入响应流,但什么也没做。没有出现下载。
下面是我在 .cshtml 中的代码
<button id="btnGenerateCSV">Generate CSV</button>
在 .js 中
$('#btnGenerateCSV').click(function () {
$.post(root + "ClaimInternal/DownloadCsv");
});
在我的控制器中
private string GetCsvString(IList<Area> Area)
{
StringBuilder csv = new StringBuilder();
csv.AppendLine("AreaID,AliasName,Description,BankName");
foreach (Area area in Area)
{
csv.Append(area.AreaID + ",");
csv.Append(area.AliasName + ",");
csv.Append(area.Description + ",");
csv.Append(area.BankName + ",");
csv.AppendLine();
}
return csv.ToString();
}
public void DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
string facsCsv = GetCsvString(data);
// Return the file content with response body.
Response.ContentType = "text/csv";
Response.AddHeader("Content-Disposition", "attachment;filename=Area.csv");
Response.Write(facsCsv);
Response.End();
}
}
我也尝试这样做
public FileContentResult DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
JsonResult result = new JsonResult();
result.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
result.Data = data;
string facsCsv = GetCsvString(data);
return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv", "Area.csv");
}
}
我也是这样制作的
public void DownloadCsv()
{
using (Database db = new Database(_ConnectionString))
{
AreaDAC dacArea = new AreaDAC(db);
List<Area> data = dacArea.Search("", "", "");
string facsCsv = GetCsvString(data);
// Return the file content with response body.
Response.Clear();
Response.Buffer = true;
Response.AddHeader("content-disposition", "attachment;filename=Area.csv");
Response.Charset = "";
Response.ContentType = "application/text";
Response.Output.Write(facsCsv);
Response.Flush();
Response.End();
}
}
但还是不行.. 没有下载 CSV 出现.. 当我全部工作时,没有错误。
现在我已经有了答案。我像这样更改脚本并且成功了..
var cd = new System.Net.Mime.ContentDisposition
{
FileName = "Area.csv",
Inline = true,
};
Response.AppendHeader("Content-Disposition", cd.ToString());
return File(new System.Text.UTF8Encoding().GetBytes(facsCsv), "text/csv");
这是通过添加新的 System.Net.Mime.ContentDisposition 来实现的。但我还是不明白为什么。
我能够使用
window.location = "/urlPath?filename=" + filename;
在我的控制器中
filename = filename.ToString();
byte[] fileBytes = System.IO.File.ReadAllBytes(filename);
var response = new FileContentResult(fileBytes, "application/octet-stream");
response.FileDownloadName = "Filename.csv";
return response;