ASP.NET中读取excel内容并显示
2018-06-17 20:35:01来源:未知 阅读 ()
项目中经常会用到把excel的文件内容导入到数据库中的,刚刚花了点时间,做了个例子,基本上能实现导入Excel后显示的功能吧,导入的excel文件得是xls,即是2003的.
代码思路如下:要读取的excel文件必得得是在本地硬盘,所以一般来说都是让远程用户选择自己硬盘上的Excel文件,然后把用户选择的文件上传到本地服务器上,再在本地服务器上进行操作.我把界面后置代码重要部分贴出来,大家自己慢慢看吧,都有注释了.
- // 上传按钮
- protected void btnUp_Click(object sender, EventArgs e)
- {
- bool b = Upload(fuExcel); // 上传excel文件
- if (!b)
- {
- return;
- }
- string name = fuExcel.FileName;
- string filepath = Server.MapPath("~/upload/") + name;
- DataSet ds = ExcelDataSource(filepath, ExcelSheetName(filepath)[0].ToString());
- GridView1.DataSource = ds;
- GridView1.DataBind();
- }
- //上传文件方法
- private bool Upload(FileUpload myFileUpload)
- {
- bool flag = false;
- //是否允许上载
- bool fileAllow = false;
- //设定允许上载的扩展文件名类型
- string[] allowExtensions = { ".xls" };
- //取得网站根目录路径
- string path = HttpContext.Current.Request.MapPath("~/upload/");
- //检查是否有文件案
- if (myFileUpload.HasFile)
- {
- //取得上传文件之扩展文件名,并转换成小写字母
- string fileExtension = System.IO.Path.GetExtension(myFileUpload.FileName).ToLower();
- //检查扩展文件名是否符合限定类型
- for (int i = 0; i < allowExtensions.Length; i++)
- {
- if (fileExtension == allowExtensions[i])
- {
- fileAllow = true;
- }
- }
- if (fileAllow)
- {
- try
- {
- //存储文件到文件夹
- myFileUpload.SaveAs(path + myFileUpload.FileName);
- lblMes.Text = "文件导入成功";
- flag = true;
- }
- catch (Exception ex)
- {
- lblMes.Text += ex.Message;
- flag = false;
- }
- }
- else
- {
- lblMes.Text = "不允许上载:" + myFileUpload.PostedFile.FileName + ",只能上传xls的文件,请检查!";
- flag = false;
- }
- }
- else
- {
- lblMes.Text = "请选择要导入的excel文件!";
- flag = false;
- }
- return flag;
- }
- //该方法实现从Excel中导出数据到DataSet中,其中filepath为Excel文件的绝对路径, sheetname为excel文件中的表名
- public DataSet ExcelDataSource(string filepath, string sheetname)
- {
- string strConn;
- strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
- OleDbConnection conn = new OleDbConnection(strConn);
- OleDbDataAdapter oada = new OleDbDataAdapter("select * from [" + sheetname + "]", strConn);
- DataSet ds = new DataSet();
- oada.Fill(ds);
- conn.Close();
- return ds;
- }
- //获得Excel中的所有sheetname。
- public ArrayList ExcelSheetName(string filepath)
- {
- ArrayList al = new ArrayList();
- string strConn;
- strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties=Excel 8.0;";
- OleDbConnection conn = new OleDbConnection(strConn);
- conn.Open();
- DataTable sheetNames = conn.GetOleDbSchemaTable
- (System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" });
- conn.Close();
- foreach (DataRow dr in sheetNames.Rows)
- {
- al.Add(dr[2]);
- }
- return al;
- }
要注意的是我们要一开始就在网站根目录下建立upload文件夹,而且要把他的权限设置为可读可写的?这个权限的问题搞得头大,不知道到底应该怎么搞的,XP系统下新建立的文件夹好像都是只读的,我右键属性把只读去掉,结果再次查看的时候还是只读,不过好像发现对程序没有什么意思,上传完excel文件后还是可以读取查看的.
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- uniGUI读取文本文件(08) 2020-02-04
- uniGUI读取文本文件02) 2020-01-31
- 读取、写入excel数据 2018-06-27
- ASP.NET简单验证码 2018-06-21
- 【转】ASP.NET"正在中止线程"错误原因 2018-06-21
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash