项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的. 
    代码思路如下:要读取的excel文件必得得是在本地硬盘,所以一般来说都是让远程用户选择自己硬盘上的Excel文件,然后把用户选择的文件上传到本地服务器上,再在本地服务器上进行操作.我把界面后置代码重要部分贴出来,大家自己慢慢看吧,都有注释了.

  1. // 上传按钮
  2. protected void btnUp_Click(object sender, EventArgs e)
  3. {
  4. bool b = Upload(fuExcel);  // 上传excel文件
  5. if (!b)
  6. {
  7. return;
  8. }
  9. string name = fuExcel.FileName;
  10. string filepath = Server.MapPath("~/upload/") + name;
  11. DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());
  12. GridView1.DataSource = ds;
  13. GridView1.DataBind();
  14. }
  15. //上传文件方法
  16. private bool Upload(FileUpload myFileUpload)
  17. {
  18. bool flag = false;
  19. //是否允许上载
  20. bool fileAllow = false;
  21. //设定允许上载的扩展文件名类型
  22. string[] allowExtensions = { ".xls" };
  23. //取得网站根目录路径
  24. string path = HttpContext.Current.Request.MapPath("~/upload/");
  25. //检查是否有文件案
  26. if (myFileUpload.HasFile)
  27. {
  28. //取得上传文件之扩展文件名,并转换成小写字母
  29. string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
  30. //检查扩展文件名是否符合限定类型
  31. for (int i = 0; i < allowExtensions.Length; i++)
  32. {
  33. if (fileExtension == allowExtensions[i])
  34. {
  35. fileAllow = true;
  36. }
  37. }
  38. if (fileAllow)
  39. {
  40. try
  41. {
  42. //存储文件到文件夹
  43. myFileUpload.SaveAs(path + myFileUpload.FileName);
  44. lblMes.Text = "文件导入成功";
  45. flag = true;
  46. }
  47. catch (Exception ex)
  48. {
  49. lblMes.Text += ex.Message;
  50. flag = false;
  51. }
  52. }
  53. else
  54. {
  55. lblMes.Text = "不允许上载:" + myFileUpload.PostedFile.FileName + ",只能上传xls的文件,请检查!";
  56. flag = false;
  57. }
  58. }
  59. else
  60. {
  61. lblMes.Text = "请选择要导入的excel文件!";
  62. flag = false;
  63. }
  64. return flag;
  65. }
  66. //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径, sheetname为excel文件中的表名
  67. public DataSet ExcelDataSource(string filepath, string sheetname)
  68. {
  69. string strConn;
  70. strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
  71. OleDbConnection conn = new OleDbConnection(strConn);
  72. OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
  73. DataSet ds = new DataSet();
  74. oada.Fill(ds);
  75. conn.Close();
  76. return ds;
  77. }
  78. //获得Excel中的所有sheetname。
  79. public ArrayList ExcelSheetName(string filepath)
  80. {
  81. ArrayList al = new ArrayList();
  82. string strConn;
  83. strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
  84. OleDbConnection conn = new OleDbConnection(strConn);
  85. conn.Open();
  86. DataTable sheetNames = conn.GetOleDbSchemaTable
  87. (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
  88. conn.Close();
  89. foreach (DataRow dr in sheetNames.Rows)
  90. {
  91. al.Add(dr[2]);
  92. }
  93. return al;
  94. }

要注意的是我们要一开始就在网站根目录下建立upload文件夹,而且要把他的权限设置为可读可写的?这个权限的问题搞得头大,不知道到底应该怎么搞的,XP系统下新建立的文件夹好像都是只读的,我右键属性把只读去掉,结果再次查看的时候还是只读,不过好像发现对程序没有什么意思,上传完excel文件后还是可以读取查看的.

ASP.NET中读取excel内容并显示的更多相关文章

  1. asp.net中导出Excel的方法

    一.asp.net中导出Excel的方法: 本文转载 在asp.net中导出Excel有两种方法,一种是将导出的文件存放在服务器某个文件夹下面,然后将文件地址输出在浏览器上:一种是将文件直接将文件输出 ...

  2. C# 读取Excel内容

    一.方法 1.OleD方法实现该功能. 2.本次随笔内容只包含读取Excel内容,并另存为. 二.代码 (1)找到文档代码 OpenFileDialog openFile = new OpenFile ...

  3. Unity用Excel.dll简单读取Excel内容

    Unity用Excel.dll简单读取Excel内容 需要Excel.dll 需要如下三个命名空间 using System.IO; using Excel; using System.Data; 1 ...

  4. R中读取EXCEL 数据的方法

    最近初学R语言,在R语言读入EXCEL数据格式文件的问题上遇到了困难,经过在网上搜索解决了这一问题,下面归纳几种方法,供大家分享: 第一:R中读取excel文件中的数据的路径: 假定在您的电脑有一个e ...

  5. php中读取文件内容的几种方法。(file_get_contents:将文件内容读入一个字符串)

    php中读取文件内容的几种方法.(file_get_contents:将文件内容读入一个字符串) 一.总结 php中读取文件内容的几种方法(file_get_contents:将文件内容读入一个字符串 ...

  6. EasyExcel 轻松灵活读取Excel内容

    写在前面 Java 后端程序员应该会遇到读取 Excel 信息到 DB 等相关需求,脑海中可能突然间想起 Apache POI 这个技术解决方案,但是当 Excel 的数据量非常大的时候,你也许发现, ...

  7. POI读取Excel内容格式化

    在用POI读取Excel内容时,经常会遇到数据格式化的问题. 比如:数字12365会变为12365.0;字符串数字123也会变为123.0,甚至会被变为科学计数法.另外日期格式化也是一个头疼的问题.其 ...

  8. 文件_ _android从资源文件中读取文件流并显示的方法

    ======== 1   android从资源文件中读取文件流并显示的方法. 在android中,假如有的文本文件,比如TXT放在raw下,要直接读取出来,放到屏幕中显示,可以这样: private ...

  9. ASP.net中导出Excel的简单方法介绍

    下面介绍一种ASP.net中导出Excel的简单方法 先上代码:前台代码如下(这是自己项目里面写的一点代码先贴出来吧) <div id="export" runat=&quo ...

随机推荐

  1. SQLAlchemy连接数据库并在django admin显示

    SQLAlchemy 0.7     postgersql  9.0 SQLAlchemy连接数据库有两种方法,一种是classic,一种是modern 1,modern方法 from sqlalch ...

  2. java的基本数据类型特征

    java的数据类型分为基本数据类型和引用数据类型. 基本数据类型分为数值型.字符型(char).布尔型(boolean) 数值型变量 1.整数型 类型 占用存储空间 表示范围 byte 1字节Byte ...

  3. ED/EP系列1《简介》

    电子存折(ED:ElectronicDeposit)一种为持卡人进行消费.取现等交易而设计的支持个人识别码(PIN)保护的金融IC卡应用.它支持圈存.圈提.消费和取现等交易. 电子钱包(EP:Elec ...

  4. 关于EF分页查询报错(Count must have a non-negative value.)的解决方案

    具体的异常信息如下,一开始没有写日志只看到错误信息:Count must have a non-negative value.,从表面意思可以看出来是Count值出现了负数,所以报错,查了半天的原因也 ...

  5. Oracle Database Gateway 安装

    在[Oracle HS (Heterogeneous Services)深入解析 及协同Gateway工作流程]一文中主要主要介绍了HS的工作原理,及其如何协同Gateway一起工作.那么了解Gate ...

  6. 解决mysql登陆时出现“ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysql/mysql.sock' (2)”

    mariadb同样适用 首先检查mysql状态 linux-6yo1:~ # /etc/init.d/mysql status Checking for service MySQL: unused m ...

  7. JavaScript高级程序设计之EventUtil

    简单的通用事件方法 var EventUtil = { getEvent: function (e) { return e || window.event; }, getTarget: functio ...

  8. Python: 迭代器与生成器小结

    迭代器与生成器的区别: 1. 迭代器由Class对象创建. 生成器由包含yield表达的Function对象或者Generator Expression创建. 2. 迭代器的原理: (1)由Itera ...

  9. OpenStack:安装Horizon

    1. 安装:# apt-get install memcached libapache2-mod-wsgi openstack-dashboard!Note for Ubuntu users# apt ...

  10. WCF 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性

    我出现这个问题主要是服务器返回数据量过大引起了,需要客户端服务端都要进行配置:我会说其实有神器的么....(工具=>wcf服务配置编辑器),用工具编辑下,就会完全搞定这个问题,再也不用纠结了 服 ...