Javascript 如何在mvc中将图形与相应数据一起动态导出到excel工作表
有没有办法将图表导出到excel表格中,并包含相应的数据。目前,我已经创建了一个mvc应用程序,并在下载按钮中单击,我可以将数组中存储的数据导出到excel工作表中。但我的主要任务是将动态图形与数据一起带到excel中,并且当excel中的值被修改时,该图形应该会动态更改。请在这方面帮助我。我只是这方面的初学者,所以。。。。 这是我的controller.cs代码Javascript 如何在mvc中将图形与相应数据一起动态导出到excel工作表,javascript,c#,jquery,.net,asp.net-mvc,Javascript,C#,Jquery,.net,Asp.net Mvc,有没有办法将图表导出到excel表格中,并包含相应的数据。目前,我已经创建了一个mvc应用程序,并在下载按钮中单击,我可以将数组中存储的数据导出到excel工作表中。但我的主要任务是将动态图形与数据一起带到excel中,并且当excel中的值被修改时,该图形应该会动态更改。请在这方面帮助我。我只是这方面的初学者,所以。。。。 这是我的controller.cs代码 public class HomeController : Controller { // // GET: /Ho
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
[HttpPost]
public void download()
{
var data = new[]{
new{ Name="Ram", Email="ram@techbrij.com", Phone="111-222-3333" },
new{ Name="Shyam", Email="shyam@techbrij.com", Phone="159-222-1596" },
new{ Name="Mohan", Email="mohan@techbrij.com", Phone="456-222-4569" },
new{ Name="Sohan", Email="sohan@techbrij.com", Phone="789-456-3333" },
new{ Name="Karan", Email="karan@techbrij.com", Phone="111-222-1234" },
new{ Name="Brij", Email="brij@techbrij.com", Phone="111-222-3333" }
};
Response.ClearContent();
Response.AddHeader("content-disposition", "attachment;filename=Contact.xls");
Response.AddHeader("Content-Type", "application/vnd.ms-excel");
WriteTsv(data, Response.Output);
Response.End();
Response.Write ("downloaded");
}
public void WriteTsv<T>(IEnumerable<T> data, TextWriter output)
{
PropertyDescriptorCollection props = TypeDescriptor.GetProperties(typeof(T));
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.DisplayName); // header
output.Write("\t");
}
output.WriteLine();
foreach (T item in data)
{
foreach (PropertyDescriptor prop in props)
{
output.Write(prop.Converter.ConvertToString(
prop.GetValue(item)));
output.Write("\t");
}
output.WriteLine();
}
}
}
公共类HomeController:控制器
{
//
//回家/
公共行动结果索引()
{
返回视图();
}
[HttpPost]
公开下载
{
var data=new[]{
新的{Name=“Ram”,电子邮件=”ram@techbrij.com,Phone=“111-222-3333”},
新的{Name=“Shyam”,电子邮件=”shyam@techbrij.com,Phone=“159-222-1596”},
新的{Name=“Mohan”,电子邮件=”mohan@techbrij.com,Phone=“456-222-4569”},
新的{Name=“Sohan”,电子邮件=”sohan@techbrij.com,Phone=“789-456-3333”},
新的{Name=“Karan”,电子邮件=”karan@techbrij.com,Phone=“111-222-1234”},
新的{Name=“Brij”,电子邮件=”brij@techbrij.com“,Phone=“111-222-3333”}
};
Response.ClearContent();
AddHeader(“内容处置”、“附件;文件名=Contact.xls”);
AddHeader(“内容类型”、“应用程序/vnd.ms excel”);
WriteTsv(数据、响应、输出);
Response.End();
答复。书面(“下载”);
}
public void WriteTsv(IEnumerable数据,TextWriter输出)
{
PropertyDescriptorCollection props=TypeDescriptor.GetProperties(typeof(T));
foreach(PropertyDescriptor道具中的道具)
{
output.Write(prop.DisplayName);//头
输出。写入(“\t”);
}
output.WriteLine();
foreach(数据中的T项)
{
foreach(PropertyDescriptor道具中的道具)
{
输出.写入(prop.Converter.ConvertToString(
道具价值(项目));
输出。写入(“\t”);
}
output.WriteLine();
}
}
}
}
在index.cshtml中
@{
ViewBag.Title = "Home Page";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
@{using (Html.BeginForm("download","home"))
{
<div>
<button>Download</button>
</div>
}}
</body>
</html>
@{
ViewBag.Title=“主页”;
}
指数
@{使用(Html.BeginForm(“下载”、“主页”))
{
下载
}}
我们以前做的是使用excel模板。以下是步骤:
希望我能提供帮助。您当前导出的文本文件内容类型错误,Excel正在(善意地(?)为您掩盖错误。如果需要图表,则必须导出
.xlsx
,而不是文本。你可以使用OpenXml()或任何包装器(ClosedXml就是其中之一),因为OpenXml不是最明显的API。谢谢你提供的信息。正如我之前所说的,我在这个领域是新手。所以请帮助我更正我的代码。我应该在代码中做什么更改来实现这一点。你们这些人都是天才。代码答案太宽泛了。你可以用谷歌搜索如何操作c#中的xlsx文件。我一直在用谷歌搜索操作,但无法理解任何东西,因为我在这方面很差。请帮助。谢谢你的帮助。但是我拥有的数据可能会更改,相应地,图表也需要更改。如果我创建一个带有图表的excel工作表,当数据被修改时,它将如何改变。Excel图形是数据驱动的。你改变了数据,图表也改变了。当然,除非你在上面塞了一个预渲染的位图!是否可以将图形导出到excel而不作为图像@freedomn不知道这意味着什么——但如果你按照@TheProvost的步骤去做,你应该会很好的去做。@tittohomas我不知道你是如何创建图表的,所以我不知道。但是,如果您可以创建它的位图图像,则可以将其导出为excel文件作为图像。不过,您必须使用互操作库或第三方控件,而不是csv文件。我给你的步骤是最有活力的方法。如果导出图像,如果更改图像中的数据,图像将不会更改