MVC导出数据到excel
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MVC导出数据到excel相关的知识,希望对你有一定的参考价值。
MVC4的框架 数据库是sql2008r2 想求一段代码可以导出数据到excel 并且控制导出的数据的位置
1 视图里 和jquery结合做的2 <input id="FileUpload" type="file" name="upload" style="width: 250px; background: White" class="easyui-validatebox" validtype="length[1,100]" />
3
4 function OK() //点击确定按钮的时候
5 var file = ($("#FileUpload").val());
6 if (file == "")
7 $.messager.alert('系统提示', '请选择将要上传的文件!');
8 document.forms[0].submit();
9
10 else
11 var stuff = file.match(/^(.*)(\.)(.1,8)$/)[3];
12 if (stuff != 'xls')
13 alert('文件类型不正确,请选择.xls文件!');
14 document.forms[0].submit();
15
16 else
17 $.ajax(
18 type: "POST",
19 url: "/后台路径/调用方法名",
20 data: "file=" + file + "",
21 success: function (result)
22 $.messager.alert('系统提示', result + "");
23
24 );
25
26
27
28 后台://要确定excel的格式动态也可以.视情况而定
29
30 public ActionResult UpLoad(string file)
31
32 string result = string.Empty;
33 string strConn;
34 strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + file + "; " + "Extended Properties=Excel 8.0;";
35 OleDbDataAdapter myCommand = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", strConn);
36 DataSet myDataSet = new DataSet();
37 myCommand.Fill(myDataSet, "ExcelInfo");
38 System.Data.DataTable tab = myDataSet.Tables["ExcelInfo"].DefaultView.ToTable();
39 // ...用foreach把tab中数据添加到数据库 省略了如果是多表插入,可以调用存储过程.呵呵
40 result="导入成功!";
41 JsonResult json = new JsonResult();
42 json.Data = result;
43 return json;
44 参考技术A 你可以先用html的Table画好表格,然后输出的时候直接设定
ContentType 的类型为 "application/ms-excel";
然后附加头信息AppendHeader("Content-Disposition", "attachment;filename="文件名.xls");
也能作为excel的表格
打字不易,如满意,望采纳。
mvc项目,导出到Excel,中文显示乱码
1 public class HomeController : Controller 2 { 3 static List<User> GetUsers() 4 { 5 List<User> list = new List<User>() { 6 new User{Id=1,Name="张三"}, 7 new User{Id=2,Name="lisi"}, 8 new User{Id=3,Name="wangwu"} 9 }; 10 return list; 11 } 12 public void SaveToExcel() 13 { 14 StringBuilder sb = new StringBuilder(); 15 sb.Append("id").Append("\\t"); 16 sb.Append("name").Append("\\n"); 17 List<User> list = GetUsers(); 18 foreach (var item in list) 19 { 20 sb.Append(item.Id).Append("\\t"); 21 sb.Append(item.Name).Append("\\n"); 22 } 23 Response.Clear(); 24 Response.Buffer = true; 25 Response.Charset = "UTF-8"; 26 Response.ContentEncoding = Encoding.UTF8; 27 Response.ContentType = "application/ms-excel"; 28 Response.AppendHeader("Content-Disposition", "attachment; filename=card.xls"); 29 Response.Write(sb.ToString()); 30 Response.End(); 31 }
这个该怎么设置下?谢谢
改成下面这样的:
Response.Charset = "GB2312";//定义输出字符集
Response.ContentEncoding = Encoding.Default;//输出内容的编码为默认编码
@大斌小呼: 那你检查一下你的Windows环境和Office,是不是英文版。我的是Win7英文版,但是在区域与语言设置里全部改成China/Chinese了。另外检查一下你的Excel,有个地方设置的,我的是Excel 2007
Response.Charset = "GB2312";试试。
刚试了下,也不行,中文的地方还是显示"
?????? |
"
@大斌小呼:
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.Default;
我这样就可以了。
Response.ContentEncoding = Encoding.UTF8;这个也得改
刚修改了下 ,这样修改也不行,还是乱码
建议用一些excel读写的组件去做。
GB2312
Response.Charset = "GB2312";
Response.ContentEncoding = Encoding.Default;
这个真能解决编码转换问题
public void SaveToExcel()
13 {
14 StringBuilder sb = new StringBuilder();
15 sb.Append("id").Append("\\t");
16 sb.Append("name").Append("\\n");
17 List<User> list = GetUsers();
18 foreach (var item in list)
19 {
20 sb.Append(item.Id).Append("\\t");
21 sb.Append(item.Name).Append("\\n");
22 }
23 Response.Clear();
24 Response.Buffer = true;
25 Response.Charset = "UTF-8";
26 Response.ContentEncoding = Encoding.UTF8;
27 Response.ContentType = "application/ms-excel";
28 Response.AppendHeader("Content-Disposition", "attachment; filename=card.xls");
29 //加上这句
30 Response.Write("<meta http-equiv=\\"content-type\\" content=\\"application/vnd.ms-excel; charset=utf-8\\"/>" + sb.ToString());
31 Response.End();
32 }
给个赏呗!!
不太明白为什么加上那句话,就可以解决乱码的问题呢。
的确加上这句就解决了乱码
Response.Write("<meta http-equiv=\\"content-type\\" content=\\"application/vnd.ms-excel; charset=utf-8\\"/>" + sb.ToString());
操蛋
以上是关于MVC导出数据到excel的主要内容,如果未能解决你的问题,请参考以下文章
我试了下,中文的还是乱码