Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 使用razor将视图导出到excel而不丢失样式_Asp.net Mvc 3_Excel_Razor - Fatal编程技术网

Asp.net mvc 3 使用razor将视图导出到excel而不丢失样式

Asp.net mvc 3 使用razor将视图导出到excel而不丢失样式,asp.net-mvc-3,excel,razor,Asp.net Mvc 3,Excel,Razor,我有一个razor视图,我想将其导出到excel 在我看来,我是在用这一行来做这件事: Response.AddHeader("Content-Type", "application/vnd.ms-excel"); 当我注释这行时,我可以看到具有我想要的样式的视图。当我取消对它的注释并请求它时,浏览器会要求我像应该的那样下载Excel文件。但问题是,当我打开文件时,我得到了这个错误 Missing file c:\scrips\excel.css 这是我用来显示页面的css 那么,如

我有一个razor视图,我想将其导出到excel

在我看来,我是在用这一行来做这件事:

Response.AddHeader("Content-Type", "application/vnd.ms-excel");    
当我注释这行时,我可以看到具有我想要的样式的视图。当我取消对它的注释并请求它时,浏览器会要求我像应该的那样下载Excel文件。但问题是,当我打开文件时,我得到了这个错误

Missing file c:\scrips\excel.css
这是我用来显示页面的css


那么,如何使文件与其布局一起保存?

您可能需要创建一个单独的“导出”视图。这意味着,它有自己的控制器
操作
,以及
视图
本身。视图需要与您希望生成的Excel文件的外观相同。它必须是独立的。没有布局,并且有一个样式标签,其中包含css(没有样式/脚本/等的链接)

下面是一个简单的例子:

假设您有一个名为“Home”的
控制器

操作内部
家庭控制器

public ActionResult Export()
{
    Response.AddHeader("Content-Type", "application/vnd.ms-excel");
    return View();
}
查看(Home\Export.cshtml):

@{
布局=”;
}
正文{字体系列:Tahoma;}
h2{颜色:红色}
表{边框:1px纯黑色;边框间距:0}
td{颜色:绿色;字体大小:.8em;填充:5px}
.标题{背景:#ccc}
试验
名称
年龄
测试1
15
测试2
16

加载此页面后,它将弹出一个下载框,并以适当的样式在excel中打开。

您的控制器应该有一个实际服务于excel文件的操作,而不是包含excel文件的网页。控制器操作应该类似于

public ActionResult Export()
{
    byte[] doc = GetExcelFileSomehow();
    var file = File(doc, "application/vnd.ms-excel");
    file.FileDownloadName = "MyFile.xlsx";
    return file;
}

你要么需要提供一个实际的Excel文件,要么只是发送一个HTML表格,然后在HTML中包含样式,而不是链接它们。但在我看来,我正在从控制器收集数据并对它们进行统计。我可以对Excel文件做同样的操作吗?@the_ruby_racer是的,使用一些像EPPlus这样的库来动态创建Excel文件。
public ActionResult Export()
{
    byte[] doc = GetExcelFileSomehow();
    var file = File(doc, "application/vnd.ms-excel");
    file.FileDownloadName = "MyFile.xlsx";
    return file;
}