项目中总是遇到要整理基础数据的问题,少量的数据还好说,如果数据量大的话,这无疑会增加项目开发的用时,拖延交期。

那么我们会让客户自己去整理基础数据,但是问题是,客户整理的数据怎写入系统呢?我们一般会采用excel文件,给定客户格式,让其按照格式整理,这样我们就可以导入数据库了,但是在使用的过程中又会产生一些基础数据,我们不可能会再次去帮助用户导入数据,那么这个时候,我们就需要用到一个功能,那就是把excel文件导入到数据库中,那么现在我们就来实现这个功能。

//=====================================================================
// 苏州塔西亚软件有限公司 
// 创建人: Aple
// 日 期: 2010-09-23
// 描 述: 读取excel数据
// QQ群: asp.net(C#)技术交流 71436018
// 版 本: 1.0.0.0
//=====================================================================

首先在页面上放3个控件,一个FileUpload(ID:FileUpload1),一个button(ID:btnRead),一个gridview(ID:GridView1),首先说明下3个控件的作用,

第一个 FileUpload1:用来让用户选择数据源excel的

第二个 btnRead:选择好数据源以后,读取数据按钮

第三个 GridView1:显示数据控件,把刚刚读取的数据显示出来

下面贴出方法:

#region 读取excel数据
        /// <summary>
        /// 读取excel数据返回datatable
        /// </summary>
        /// <param name="sheetName">要读取数据的sheet的名字</param>
        /// <returns>返回excel里的数据</returns>
        public DataTable ReadExcelData(string sheetName,FileUpload UpLoadFile)
        {
            string strFileName = "";
            DataSet ds = new DataSet();
            DataTable dt;
             String fileName = UpLoadFile.PostedFile.FileName.Substring(UpLoadFile.PostedFile.FileName.LastIndexOf("\\") + 1, UpLoadFile.PostedFile.FileName.Length - 1 - UpLoadFile.PostedFile.FileName.LastIndexOf("\\"));
            ///取到当前时间的年、月、日、分、秒和毫秒的值,并使用字符串格式把他们组合成一个字符串
            String fileTime = DateTime.Now.Year.ToString() + DateTime.Now.Month.ToString()
            + DateTime.Now.Day.ToString() + DateTime.Now.Hour.ToString()
            + DateTime.Now.Second.ToString() + DateTime.Now.Minute.ToString()
            + DateTime.Now.Millisecond.ToString();
            ///在时间字符串后面添加一个随机数和文件的后缀名
            String src = fileName.Substring(fileName.LastIndexOf(".") + 1, fileName.Length - fileName.LastIndexOf(".") - 1).ToLower();
            fileName = fileTime + GetRandomint() + "." + src;
            //上载文件到服务器硬盘
            UpLoadFile.PostedFile.SaveAs(Server.MapPath(Request.ApplicationPath) + "UserFile\\" + fileName);
            strFileName = Server.MapPath(Request.ApplicationPath) + "UserFile\\" + fileName;
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source= "+ strFileName + "; Extended Properties='Excel 8.0'";
            OleDbDataAdapter oada = new OleDbDataAdapter("select * from ["+sheetName+"$]", strConn);
            oada.Fill(ds);
            dt = ds.Tables[0];
            return dt;
        }
        #endregion

以上方法用到一个随机数的方法

private static string GetRandomint()
       {
             Random random = new Random();
             return(random.Next(10000).ToString());    //产生一个小于10000的随机正整数
       }
好了,有了这2个方法,我们就可以在 button 按钮的事件里调用这个方法了:

调用如下:

DataTable dt= ReadExcelData("查询", FileUpload1);
           GridView1.DataSource = dt;
           GridView1.DataBind();

当然喽,这只是最基本的读取excel数据,如果想插入数据那就得按照规定的格式整理excel,然后从datatable里读取数据循环插入数据库。

记得引用 using System.Data.OleDb;

[转]C# web 读取Excel文件的更多相关文章

  1. ADO.NET 读取Excel文件,并作数据源

    项目中需要用的功能,贴上代码了. 需要注意的地方:配置Web.config的时候要注意版本问题! //若是在Web.config中配置数据源,如下 <add key="ExcelCon ...

  2. .Net读取Excel文件时丢失数据的问题 (转载)

    相信很多人都试过通过OleDB读取Excel文件,这种方法效率十分高,只是有一点会让人十分头痛,就是当一列中既有混合型数据,又有纯数据时,往往容易丢失数据. 百度过后,改连接字符串 “HDR=YES; ...

  3. form表单提交,Servlet接收并读取Excel文件

    首先是jsp页面: <body scroll=no style="overflow-y:hidden;" onselectstart="return false&q ...

  4. Java实现POI读取Excel文件,兼容后缀名xls和xlsx

    1.引入所需的jar包: maven管理项目的话直接添加以下坐标即可: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi -- ...

  5. PhpSpreadsheet如何读取excel文件

    PhpSpreadsheet如何读取excel文件 一.总结 一句话总结:万能的百度,直接搜代码就好,绝对有,毕竟github上面4000+的关注,说明很多人用了这个,使用照着demo倒是异常简单 二 ...

  6. JAVA 读取excel文件成List<Entity>

    package com.fsinfo.common.utils; import com.fsinfo.modules.enterprise.entity.EnterpriseRecordEntity; ...

  7. C# 读取EXCEL文件的三种经典方法

    1.方法一:采用OleDB读取EXCEL文件: 把EXCEL文件当做一个数据源来进行数据的读取操作,实例如下: public DataSet ExcelToDS(string Path) { stri ...

  8. c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出

    c# .Net :Excel NPOI导入导出操作教程之读取Excel文件信息及输出 using NPOI.HSSF.UserModel;using NPOI.SS.UserModel;using S ...

  9. PHPExcel读取Excel文件的实现代码

    <?php require_once 'PHPExcel.php'; /**对excel里的日期进行格式转化*/ function GetData($val){ $jd = GregorianT ...

随机推荐

  1. 【Android】关于连续多次点击控件的控制方案(新建监听类)

    参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客 实现逻辑很简单: 设置限定时间 在用户点击时开始计时 若计时未超过限定时间,则不允许触发点击事件 因还未学习过Rxja ...

  2. 2021年【线上】lammps分子动力学技术实战培训班

    材料模拟分子动力学课程 3月19号--22号 远程在线课 lammps分子动力学课程 3月12号--15号 远程在线课 第一性原理VASP实战课 3月25号-28号 远程在线课 量子化学Gaussia ...

  3. linux系统层面调优

    linux系统层面调优和常见的面试题 - 云+社区 - 腾讯云 https://cloud.tencent.com/developer/article/1664287

  4. is_callable Callbacks / Callables What is a “callable”? 可调用 回调函数

    PHP: Callback / Callable 类型 - Manual https://www.php.net/manual/zh/language.types.callable.php Callb ...

  5. threading.RLock()

    # Copyright 2001-2017 by Vinay Sajip. All Rights Reserved.## Permission to use, copy, modify, and di ...

  6. goroutine 分析 协程的调度和执行顺序 并发写 run in the same address space 内存地址 闭包 存在两种并发 确定性 非确定性的 Go 的协程和通道理所当然的支持确定性的并发方式(

    package main import ( "fmt" "runtime" "sync" ) const N = 26 func main( ...

  7. TCP介绍

    TCP协议,传输控制协议(英语:Transmission Control Protocol,缩写为 TCP)是一种面向连接的.可靠的.基于字节流的传输层通信协议,由IETF的RFC 793定义. TC ...

  8. 【从零开始撸一个App】RecyclerView的使用

    目标 前段时间打造了一款简单易用功能全面的图片上传组件,现在就来将上传的图片以图片集的形式展现到App上.出于用户体验考虑,加载新图片采用[无限]滚动模式,Android平台上我们优选Recycler ...

  9. 小白搭建WNMP详细教程---NGINX、MYSQL、PHP的整合配置

    我自定义安装后的目录结构如下: 安装在D盘的WNMP下,其中WWW是网站的目录.ZIPS是放压缩包文件. 一.配置环境变量 在桌面右击我的电脑,选择属性,出现窗口后,按下图所示操作: 点击编辑后,会出 ...

  10. 一篇文章搞定Java注解^_^

    0.序言 自己写这些文章本来想着自己系统的整理下知识,将知识串起来,后面复习用,或者以后年龄大了,去教育机构呀,拿出自己整理的笔记,你看这人爱总结爱分享,文笔也还能看,方便找工作不是. 很开心的是,有 ...