项目中经常会用到把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. Struts2中的namespace使用

    namespace一般在项目比较复杂的情况下使用较好. 在struts2的项目中,namespace主要在以下环境中常使用: 1. 在配置文件中(struts.xml)以及被它包含的XX.xml文件中 ...

  2. Android四大组件一----Activity

    最新面试需要复习一下Android基础. {所谓Activity} 通俗点:app上看到的窗口基本都是Activity Android 程序一般是由多个Activity组成,用户看到的能够交互的窗口通 ...

  3. String类的比较

    //strcmp只能运用于数组的比较 //string类可以用成员函数compare() //即a.compare(b) //例如 "; "; a.compare(b)返回值= & ...

  4. C#和.NET版本

    1999年,就听说微软公司在研发一种名为“cool”的新开发语言,而具体内幕一直是个谜,直到2000年6月26日微软在奥兰多举行的“职业开发人员技术大会”(PDC 2000)上,这个谜底终于揭晓了,这 ...

  5. <! [if IE 神奇的条件注释 ]>

    早上起来无聊,看到某学长发的一张代码截图有条件注释,正好,研究一下. 条件注释: 在IE中用来区分IE版本.是否为IE的代码神器! 在其他的浏览器里是不好使的. 不过也值得了,IE都区分出来了,其他的 ...

  6. 关于Cygwin——包管理、替换默认终端、同MSYS的比较

    (搬运自我在SegmentFault的博客) Cygwin 是一个用于 Windows 的类 UNIX shell 环境. 它由两个组件组成:一个 UNIX API 库,它模拟 UNIX 操作系统提供 ...

  7. FineUI PK DWZ

    一.概述 FineUI(ExtAspNet)是基于 jQuery / ExtJS 的 ASP.NET 控件库. DWZ是基于JQuery的一个客户端框架. 二.比较 三.总结 这两个东西实质都是对控件 ...

  8. 在Linux下JDK1.4.2安装报错的解决方法

    JDK1.4.2的安装   Do you agree to the above license terms? [yes or no]   yes   Unpacking...   tail: cann ...

  9. arcgis中求多点到一条曲线的最短欧几里得距离

    1.使用的工具:Arctoolbox----Analysis Tools----Proximity----Near工具. 2.注意:在求距离之前一定要先设置好坐标系统.

  10. Redbean:入门(一) - 增删改查

    <?php require_once 'rb.php'; $tableName = "link"; //链接数据库 R::setup("mysql:host=loc ...