项目中经常会用到把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. ASP.NET MVC5学习笔记之Action参数模型绑定基本过程

    当我们在Controller中定义一个Action,通常会定义一个或多个参数,每个参数称为一个模型,ASP.NET MVC框架提供了一种机制称为模型绑定,会尝试自动从请求的信息中实例化每一个模型并赋值 ...

  2. Delphi7中编译提示“Unsafe type 'PChar'”的原因及处理办法

    delphi7中加入了对.net的支持 在.net中是没有指针的(托管环境中),所以指针都是不安全的,不符合.net规范 所以d7里有警告,可以不管它 DELPHI7已经考虑到了移植到点NET的问题, ...

  3. C# 平时碰见的问题【6】

    EF Code First 设置复合主键的方法 除了单纯多对多的关系表外, 我们可能在关系表上加其他的属性: 比如[订单行] 对应的[订单]和[商品]就需要多一个数量字段 而又不想在这个[订单行]表上 ...

  4. Moses manual 中Basline System 2.3.4节用IRSTLM创建语言模型的命令有误

    手册里写到: ~/irstlm/bin/compile-lm \ --text yes \ news-commentary-v8.fr-en.lm.en.gz \ news-commentary-v8 ...

  5. .net 动态编译解决考勤计算问题

    由于公司实施SAP HR项目,但是SAP HR对考勤功能真的太弱化了,直接从考勤机上读取的原始打卡记录不能直接传输到HR系统里面,因为SAP HR不能识别那些多余的打卡记录,而且必须把打卡记录进行成组 ...

  6. C++经典书籍推荐

    <C++程序设计语言> <C++语言设计与演化> <C++标准程序库> <EFFECTIVE C++ 中文版> <MORE EFFECTIVE C ...

  7. SQLite之写一个表

    1.首先你需要一个路径. 获取document目录并返回数据库目录 - (NSString *)dataFilePath{ NSArray *paths = NSSearchPathForDirect ...

  8. URI与URL的区别

    (原网址:http://zhidao.baidu.com/question/38764759.html) Web上可用的每种资源 - HTML文档.图像.视频片段.程序等 - 由一个通过通用资源标志符 ...

  9. mysql取整,小数点处理函数floor(), round()

    mysql数值处理函数floor与round    在mysql中,当处理数值时,会用到数值处理函数,如有一个float型数值2.13,你想只要整数2,那就需要下面的函数floor与round.   ...

  10. [小技巧]让你的GridView支持IQueryable,并自动实现真分页

    众所周知,asp.net自带的GridView在自带分页方面设计得很2,因为它是假分页,即内存分页.而且它不智能支持强大的Iqueryable. 但这表明微软忽略了现实中的分页需求吗?答案应该不是,我 ...