一、导入Excel的界面

这个界面很简单,代码就不列出来了。
二、导入的代码
我分了两部分,第一部分是点击查看数据的代码,这个是将数据导入到DataTable里面,但是还没有导入到数据库里。这里需要注意的是当程序在服务器运行时,要先把导入的文件上传到服务器上,否则不能导入,会出现莫名奇妙的错误,为了改这个错误当初弄了好久,希望大家不要走我的弯路啊。如果是在自己的机器上就不用上穿文件。
第二部分是选择相应的表,然后将数据导入到表里面,这部分很简单。
1、

try
        {
            InputDataBLL input = new InputDataBLL();
            this.Label1.Text = "";
            if (this.FileUpload1.HasFile)
            {
               // string filename = this.FileUpload1.PostedFile.FileName.ToString().Trim();
                DataTable inputdt = new DataTable();
                int len = this.FileUpload1.FileName.ToString().Trim().Length;
                string path = "~/temp/upfile/"+this.FileUpload1 .FileName .ToString ().Trim();
                path = Server.MapPath(path);
                this.FileUpload1.SaveAs(path); //上传文件
                inputdt = input.InputExcel(path, this.FileUpload1.FileName.ToString().Trim().Substring(0, len - 4),this.TextBox1.Text.Trim ());
                if (Session["inputdt"] != null)
                    Session.Remove("inputdt");
                Session.Add("inputdt", inputdt);
                if (inputdt.Rows.Count > 0)
                {
                    this.GridView1.DataSource = inputdt;
                    this.GridView1.DataBind();
                }
            }
            else
                throw new Exception("请选择导入表的路径");
        }
        catch (Exception ex)
        {
            Response.Write("<script language='javascript'>alert('" + ex.Message + "');</script>");
        }

导入的函数

 /// <summary>
    /// 导入数据到数据集中
    /// </summary>
    /// <param name="Path"></param>
    /// <param name="TableName"></param>
    /// <param name="tablename2">如果这个有就以他为表名,没有的话就以TableName</param>
    /// <returns></returns>
    public DataTable InputExcel(string Path,string TableName,string tablename2)
    {
        try
        {
            string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + Path + ";" + "Extended Properties=Excel 8.0;";
            OleDbConnection conn = new OleDbConnection(strConn);
            conn.Open();
            string strExcel = "";
            OleDbDataAdapter myCommand = null;
            if (tablename2.Length > 0 && !tablename2.Equals(string.Empty))
                TableName = tablename2;
            strExcel = "select * from [" + TableName + "$]";
            myCommand = new OleDbDataAdapter(strExcel, strConn);
            DataTable dt = new DataTable();
            myCommand.Fill(dt);
            conn.Close();
            return dt;
        }
        catch (Exception ex)
        {
            throw new Exception(ex.Message);
        }
    }

二、将数据导入到数据库里
这部分其实很简单,就是插入数据。

 if (this.DropDownList1.SelectedItem.Text.ToString().Equals("Material"))//导物料
            {
                new StockBaseBLL().ISUserModel("物料导入", Response, Request, Server);
                MaterialBLL material = new MaterialBLL();
                   foreach (DataRow row in inputdt.Rows)//inputdt为刚刚从函数中返回的数据源
                {
                    float MaterialPrice = 0.0f;
                    float MaterialTaxPrice = 0.0f;
                    float TaxRate = 0.0f;
                    float Moneys = 0.0f;
                    int temp=0;
                    if (row["单价"].ToString().Trim() != "")
                        MaterialPrice = float.Parse(row["单价"].ToString().Trim());
                    if (row["含税单价"].ToString().Trim()!="")
                        MaterialTaxPrice=float.Parse(row["含税单价"].ToString().Trim());
                    if (row["税率"].ToString().Trim()!="")
                        TaxRate= float.Parse(row["税率"].ToString().Trim());
                    if (row["金额"].ToString().Trim()!="")
                        Moneys=float.Parse(row["金额"].ToString().Trim());

                    if (material.SelectMaterialsDynamic("MaterialID='" + row["物料长代码"].ToString() + "'", "").Rows.Count <= 0) //不存在,其实可以不要,因为编号是主键,如果相同则插不进去
                        temp = material.InsertMaterial(row["物料长代码"].ToString(), row["物料名称"].ToString(), row["单位"].ToString().Trim(), MaterialPrice, MaterialTaxPrice, TaxRate, Moneys, 0);
                    else
                        NotIntoID += row["物料长代码"].ToString()+",";
                    if (temp > 0)
                            index += temp;
                     temp = 0;
                }
            }

asp.net导入Excel表的更多相关文章

  1. winfrom 导入Excel表到access数据库(来自小抽奖系统)

    网上有很多这种方法,本人只是针对自己的系统来实现的 //导入excel表 private void ImportTSMenu_Click(object sender, EventArgs e) { O ...

  2. 向ACCESS数据库中的表导入EXCEL表,在 System.Data.OleDb.OleDbException 中第一次偶然出现的“System.Data.dll”类型的异常

    向ACCESS数据库中的表导入EXCEL表,EXCEL表Sheet1中与ACCESS数据库表中的关键字对应的列的值,不能与数据库中表的主键项值重复,不然就会出现 在 System.Data.OleDb ...

  3. C# winform 编程 向ACCESS数据库导入EXCEL表使用心得

    public string MyConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=ErLake.mdb&quo ...

  4. 向MySql数据库导入excel表数据

    最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...

  5. PLSQL导入Excel表中数据

     PL/SQL 和SQL Sever导入excel数据的原理类似,就是找到一个导入excel数据的功能项,按照步骤走就是了.下面是一个些细节过程,希望对像我这样的菜鸟有帮助.  www.2cto.co ...

  6. SQL Server 2005导入Excel表问题

    EXCEL导入到SQL Server经常出现“文本被截断,或者一个或多个字符在目标代码页中没有匹配项” 原因: SQL Server的导入导出为了确定数据表的字段类型,取excel文件的前8行来判别. ...

  7. ASP.NET导出excel表方法汇总

    asp.net里导出excel表方法汇总  1.由dataset生成 public void CreateExcel(DataSet ds,string typeid,string FileName) ...

  8. ASP.NET 导入EXCEL文档

    鉴于教务一般都是手动输入学生信息,在未了解本校数据库的客观情况之下,我们准备设计一个导入excel文档中学生信息如数据库的功能.结合网上各类大牛的综合版本出炉.. 首先具体的实现思想如下: 1.先使用 ...

  9. ASP.NET导入Excel到SQL数据库

    protected void btnChange_Click(object sender, EventArgs e) { UserInfoClass tClass = (UserInfoClass)S ...

随机推荐

  1. 面向对象编程思想(OOP)

    本文我将从面向对象编程思想是如何解决软件开发中各种疑难问题的角度,来讲述我们面向对象编程思想的理解,梳理面向对象四大基本特性.七大设计原则和23种设计模式之间的关系. 软件开发中疑难问题: 软件复杂庞 ...

  2. How about xlogs are missing and xlogs are deleted

    [postgres@minion1 bin]$ pwd /usr/local/pgtest/bin [postgres@minion1 bin]$ ./pg_ctl -D ../data/ start ...

  3. [编辑] 分享一些java视频

    1.官网:http://www.atguigu.com/,导航栏视频下载,根据自己的需求下载,对应的视频,其次可以下载相应的文档. 2.百度网盘: 链接: http://pan.baidu.com/s ...

  4. VPN服务器的配置与应用

      实验场景 通过将Linux配置VPN服务器允许远程计算机能够访问内网. 我的目的: 现在需要开发第三方接口,而第三方接口有服务器IP地址鉴权配置,这样在本地开发出来的程序每次都要发布到服务器上测试 ...

  5. java中创建线程的几种方法及区别

    1,实现Runnable接口创建线程 特点: A:将代码和数据分开,形成清晰的模型 B:线程体run()方法所在的类可以从其它类中继承一些有用的属性和方法 C:有利于保持程序风格的一致性 2,继承Th ...

  6. mesos概述

    mesos解决的问题 不同的分布式运算框架(spark,hadoop,ES,MPI,Cassandra,etc.)中的不同任务往往需要的资源(内存,CPU,网络IO等)不同,它们运行在同一个集群中,会 ...

  7. jquery中的事件进阶

    1.事件冒泡 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...

  8. 夺命雷公狗ThinkPHP项目之----企业网站18之网站配置列表页的完成

    我们点击下配置列表即可查看我们列表页的配置信息了: 其实这个最简单了,首先我们先来完成他控制器的代码: public function lists(){ $mod = M('Conf')->se ...

  9. 9. 星际争霸之php设计模式--代理模式

    题记==============================================================================本php设计模式专辑来源于博客(jymo ...

  10. zw版【转发·台湾nvp系列Delphi例程】HALCON TestObjDef

    zw版[转发·台湾nvp系列Delphi例程]HALCON TestObjDef procedure TForm1.Button1Click(Sender: TObject);var img : HU ...