【发布时间】:2010-03-05 18:16:06
【问题描述】:
我有一个带有数据的网格视图。我需要使用 asp.net mvc 将一个按钮导出/导入该 gridview 数据到 excel 工作表。
谁能帮我看看怎么做。
谢谢。
【问题讨论】:
标签: asp.net-mvc
我有一个带有数据的网格视图。我需要使用 asp.net mvc 将一个按钮导出/导入该 gridview 数据到 excel 工作表。
谁能帮我看看怎么做。
谢谢。
【问题讨论】:
标签: asp.net-mvc
您可以绕过 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();
【讨论】:
如果数据要由客户端提交,则将其 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 数据是另一回事。我没有做太多这方面的工作,所以希望其他人能够就此提供一些见解。
【讨论】:
要从 excel 导入,请照常上传文件。 然后参考 Microsoft.Office.Interop.Excel.dll(来自 office 11),您可以使用 excel api 遍历工作表并提取数据。
【讨论】:
我的建议是使用 LocalReport 来呈现结果。您只需使用所需的布局创建一个 rdlc 文件(在项目中添加新报告)。然后您必须传递您希望绑定的数据并调用 Render 方法(您可以返回 excel 和 pdf)。老实说,我手头没有任何示例代码,但如果你用谷歌搜索一下,你肯定会知道怎么做。 祝你好运。
【讨论】: