如何使用ASP.NETMVC导出Excel文件中的表?
我的视图由多个表组成,我希望从Excel文件的视图中导出多个表。我当前的函数仅帮助我导出1个表 有谁能帮我完成这段代码以便可以导出多个表吗如何使用ASP.NETMVC导出Excel文件中的表?,excel,asp.net-mvc,asp.net-mvc-4,asp.net-mvc-3,Excel,Asp.net Mvc,Asp.net Mvc 4,Asp.net Mvc 3,我的视图由多个表组成,我希望从Excel文件的视图中导出多个表。我当前的函数仅帮助我导出1个表 有谁能帮我完成这段代码以便可以导出多个表吗 报告虚拟机 导出的操作方法 公共文件ContentResult下载报告(日期时间开始,日期时间结束) { //var uName=User.Identity.Name; var fileDownloadName=String.Format(“Report.xlsx”); const string contentType=“application/vnd.op
非常感谢你的帮助。提前谢谢。您需要创建div/table,将所有表放在其中,然后使用下面的javascript函数。请在包含所有数据的同一页面上单击按钮调用此javascript函数。这是我的工作,我已经在我的项目中使用
function DownloadToExcel() {
var htmls = $("#compareBodyContent")[0].innerHTML; // this main element under which
//all you data
var uri = 'data:application/vnd.ms-excel;base64,';
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>';
var base64 = function (s) {
return window.btoa(unescape(encodeURIComponent(s)))
};
var format = function (s, c) {
return s.replace(/{(\w+)}/g, function (m, p) {
return c[p];
})
};
var ctx = {
worksheet: 'Worksheet',
table: '<table>' + htmls + '</table>'
}
var compareLink = document.createElement("a");
compareLink.download = "Compare_Test.xls";
compareLink.href = uri + base64(format(template, ctx));
compareLink.click();
}
函数下载到excel(){
var htmls=$(“#compareBodyContent”)[0]。innerHTML;//此主元素在其中
//你所有的数据
var uri='数据:application/vnd.ms excel;base64';
var模板=“{table}”;
var base64=函数{
返回窗口.btoa(unescape(一个或多个组件)))
};
var格式=函数(s,c){
返回s.replace(/{(\w+)}/g,函数(m,p){
返回c[p];
})
};
变量ctx={
工作表:“工作表”,
表:“”+htmls+“”
}
var compareLink=document.createElement(“a”);
compareLink.download=“Compare\u Test.xls”;
compareLink.href=uri+base64(格式(模板,ctx));
compareLink.click();
}
希望这对你有帮助。如果您对此有任何疑问,请告诉我。如果您在视图中显示的数据是以html的形式显示的,您可以使用javascript进行操作。您是否尝试将其导出到文件以供下载或显示?我正在尝试将其导出到excel文件以供下载。目前它按场景分组下载,我希望按场景分组下载另一个表Username@ManjoKS谢谢,java脚本可以工作,并且可以从视图中导出所有表。尽管所有表格都在工作表上导出。如何在单独的工作表中导出每个表。就像第1页上的场景,第2页上的用户名等等。非常感谢你的帮助。谢谢,很高兴知道。您可以在Google中找到要在单独的工作表中导出的内容。我已经给出了一个想法,你们需要解决它。
public FileContentResult DownloadReport(DateTime start, DateTime end)
{
//var uName = User.Identity.Name;
var fileDownloadName = String.Format("Report.xlsx");
const string contentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
// Pass your ef data to method
ExcelPackage package = GenerateExcelFile(db.Chats.Where(x => System.Data.Entity.DbFunctions.TruncateTime(x.ChatCreateDateTime) >= start && System.Data.Entity.DbFunctions.TruncateTime(x.ChatCreateDateTime) <= end)
.GroupBy(a => a.ScenarioList).Select(b => new ReportVM()
{
ScenName = b.Key,
Count = b.Count()
}).ToList());
var fsr = new FileContentResult(package.GetAsByteArray(), contentType);
fsr.FileDownloadName = fileDownloadName;
return fsr;
}
private static ExcelPackage GenerateExcelFile(IEnumerable<ReportVM> datasource)
{
ExcelPackage pck = new ExcelPackage();
//Create the worksheet
ExcelWorksheet ws = pck.Workbook.Worksheets.Add("Sheet 1");
// Sets Headers
ws.Cells[1, 1].Value = "Scenario";
ws.Cells[1, 2].Value = "No.Of Chats";
// Inserts Data
for (int i = 0; i < datasource.Count(); i++)
{
ws.Cells[i + 2, 1].Value = datasource.ElementAt(i).ScenName;
ws.Cells[i + 2, 2].Value = datasource.ElementAt(i).Count;
}
//Sheet2
// Format Header of Table
using (ExcelRange rng = ws.Cells["A1:B1"])
{
rng.Style.Font.Bold = true;
rng.Style.Fill.PatternType = ExcelFillStyle.Solid; //Set Pattern for the background to Solid
rng.Style.Fill.BackgroundColor.SetColor(Color.Gold); //Set color to DarkGray
rng.Style.Font.Color.SetColor(Color.Black);
}
return pck;
}
function DownloadToExcel() {
var htmls = $("#compareBodyContent")[0].innerHTML; // this main element under which
//all you data
var uri = 'data:application/vnd.ms-excel;base64,';
var template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>';
var base64 = function (s) {
return window.btoa(unescape(encodeURIComponent(s)))
};
var format = function (s, c) {
return s.replace(/{(\w+)}/g, function (m, p) {
return c[p];
})
};
var ctx = {
worksheet: 'Worksheet',
table: '<table>' + htmls + '</table>'
}
var compareLink = document.createElement("a");
compareLink.download = "Compare_Test.xls";
compareLink.href = uri + base64(format(template, ctx));
compareLink.click();
}