如何使用asp.net mvc实现按钮单击从网格视图到Excel工作表的导入/导出

时间:2010-02-22 21:44:51

标签: asp.net-mvc

我有一个数据网格视图。我需要使用一个按钮将该gridview数据导出/导入到excel表格,使用asp.net mvc。

有人可以帮我解决这个问题。

感谢。

4 个答案:

答案 0 :(得分:1)

如果要由客户端提交数据,则将其POST到服务器。一旦它在服务器上,创建一个StringBuilder并将数据转换为一个大字符串,在每行之后使用逗号分隔列分隔符和换行符。然后返回一个新的FileResult:

在您的控制器中,创建了StringBuilder sb:

之后
MemoryStream ms = new MemoryStream();
StreamWriter writer = new StreamWriter(ms, Encoding.UTF8);
writer.Write(sb.ToString());
writer.Flush();
ms.Position = 0;

return File(ms, "application/vnd.ms-excel", "myfile.csv");

导入Excel数据是另一回事。我没有做太多的事情,所以希望其他人能够提供一些见解。

答案 1 :(得分:1)

要从excel导入,请照常上传文件。 然后引用Microsoft.Office.Interop.Excel.dll(来自office 11),您可以使用excel api迭代工作表并提取数据。

答案 2 :(得分:1)

我的建议是使用LocalReport来渲染结果。您只需使用所需的布局创建rdlc文件(在项目中添加新报告)。然后你必须传递你想要绑定的数据并调用Render方法(你可以返回excel和pdf)。老实说,我手边没有任何示例代码,但如果你稍微谷歌一点,你肯定会找到如何做到这一点。 祝你好运。

答案 3 :(得分:1)

您可以绕过Excel自动化并像这样使用OleDbConnection

connectionString = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='Excel 8.0;'";
...

connectionString = string.Format(connectionString, fileName);
OleDbConnection conn = new OleDbConnection(connectionString)
.............
// You can create table or insert value using SQL statement 
// Create your OleDbCommand and execute it. 
............
conn.Close();