EXCEL导入GridView,然后再汇入数据库.

原文:EXCEL导入GridView,然后再汇入数据库.
近日项目中有一个多笔料号要输入,我做了一个用javascript复制输入框的功能,可以输入多笔料号。
但是使用者反馈,料号太多,可能几百个料号在EXCEL文件里,这样输入很慢,需要增加功能。于是想到了SQLSERVER导入EXCEL的功能。

declare @strExcelName varchar(50)
set @strExcelName='c:\sl.xls'
exec('select * into ##tmp from openrowset(''MICROSOFT.JET.OLEDB.4.0'',''Excel 8.0;HDR=No;IMEX=1;DATABASE='+@strExcelName+''',[Sheet1$]) ')
select * from ##tmp

这样是可以导入数据,但是问题来了。我的数据库服务器和运行程序服务器不在同一服务器,无法导入(可能有方法,但是项目紧,没时间去探索),于是想到另外一个方法:先上传EXCEL文件,然后读入DATASET放入GridView,然后从GridView提交到数据库,这样就没有问题。

文件上传控件:<input id="myFile" runat="server" type="file" />
Form里不需要enctype="multipart/form-data"

文件上传代码:

            if (myFile.PostedFile.FileName != "")
            {
                //上传文件的绝对路径
                string sFile = myFile.PostedFile.FileName;
                //获取文件全名
                sFile = sFile.Substring(sFile.LastIndexOf("\\") + 1);
                //获取后缀名
                sFile = sFile.Substring(sFile.LastIndexOf("."));
                if (sFile.ToLower() != ".xls")
                {
                    Response.Write("请选择Excel文件!");
                    Response.End();
                }
                //为了防止重名,获得日期为文件名年月日时分秒毫秒
                string datatime = System.DateTime.Now.ToString("yyyMMddHHmmssffff");
                //上传后文件的新名
                sFile = datatime + sFile;
                //AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
                //sPath 获取上传后的路径
                string sPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ExcelFiles\\" + sFile;
                //上传文件
                myFile.PostedFile.SaveAs(sPath);
                this.myGridView.DataSource = GetExcelContent(sPath);
                this.myGridView.DataBind();
            }

读取EXCEL到DATASET代码:

        private DataSet GetExcelContent(string filepath)
        {
            string strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filepath + ";Extended Properties='Excel 8.0;HDR=No;IMEX=1'";
            System.Data.OleDb.OleDbConnection myConn = new System.Data.OleDb.OleDbConnection(strCon);
            string strCom = "SELECT F1 as resno,F2 as resname FROM [Sheet1$]";
            myConn.Open();
            System.Data.OleDb.OleDbDataAdapter myCommand = new System.Data.OleDb.OleDbDataAdapter(strCom, myConn);
            //创建一个DataSet对象   
            DataSet myDataSet = new DataSet();
            //得到自己的DataSet对象   
            myCommand.Fill(myDataSet);
            //关闭此数据链接   
            myConn.Close();
            return myDataSet;
        }

最后是数据提交到数据库代码:

            string stresno = "";
            string stresname = "";
            foreach (GridViewRow row in this.myGridView.Rows)
            {
                Label txtesno = (Label)row.FindControl("labresno");
                stresno += txtesno.Text.ToString().Trim().Replace("'", "''") + ";";

                Label txtresname = (Label)row.FindControl("labresname");
                stresname += txtresname.Text.ToString().Trim().Replace("'", "''") + ";";
            }
            Response.Write(stresno + "<br/>" + stresname);
            Response.End();

时间: 2024-11-02 17:57:33

EXCEL导入GridView,然后再汇入数据库.的相关文章

Excel导入oracle数据,oracle数据库导出excel方法

导出 导出的话,在PL/SQL的SQL Window中查询结果中选中查询结果右单击就有 COPY TO EXCEL这个选择的 导入 方法一 以下的文章主要是介绍如何用SQL*Loader将Excel相关的数据导出到Oracle数据库,其主要的目的是实现往Oracle数据库里插入excel相关文件中的实际应用数据,以下就是文章的具体内容的介绍. 实现步骤: 1.打开MicroSoft Excel 2.文件(F)→新建(N)→工作簿→ 3.输入SQL*Loader将Excel数据后,存盘为test.

excel导入到Gridview并且保存到数据库中

问题描述 页面设计了一个fileupload,通过button导入excel到Gridview显示,导入的数据保存到sqlserver,最好带删除键,删除导入错误的数据! 解决方案 解决方案二:protectedvoidbtn_导入_Click(objectsender,EventArgse){if(FileUpload1.PostedFile.FileName!=""){//定义上传路径(在当前目录下的uploadfile文件下)stringuploadpath="c:&q

导入Excel电子表格数据到SQL Sever数据库的另一种方法

excel|电子表格|数据|数据库 上次给大家提供了一个从Excel电子表格导入到SQL Server数据库的方法,前提条件是机器上要装有Office 里的Excel组件.今天再为大家提供另一种方法:不需要安装Excel也可以导入到我们的SQL Server数据库.首先用SQL Server自身的数据转换功能把Excel导入到 SQL Server中,下面的示例中导入后的表名为:Sheet1$,然后我们再从这个库中把数据导入到我们自己的系统的数据表中.(这样一来就是2个SQL Server表中的

sql-SQL使用游标把excel导入数据库

问题描述 SQL使用游标把excel导入数据库 我现在有一个表,想把Excel中的十几万跳数据使用游标插入,中途要对excel中的数据进行判断操作,急啊~ 解决方案 我的建议是不要使用游标插入 否则会很慢 你可以先把excel中的数据全部倒入到数据库中 再用sql对数据进行处理

请教EXCEL导入sqlserver数据库

问题描述 现在我可以将EXCEL导入到数据库里面去(单表操作)但是现在需求是要做成通用的就是在页面上选择表名(或者从EXCEL文件里面获取到表明)就将数据导入到那张表里去像这样的多表操作我就没了思路请各位指导!!! 解决方案 解决方案二:都差不多.只是中间多了一个创建表的过程.将表名,表的字段,类型都取出来,创建表.然后放入数据库解决方案三:求解啊!!!解决方案四:都差不多.只是中间多了一个创建表的过程.将表名,表的字段,类型都取出来,创建表.然后放入数据库解决方案五:每次得到的Excel还有插

窗体-在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中

问题描述 在不使用数据库的情况下,如何使用c#的winform ,将Excel导入到datagridview中 小弟有个问题求教一下,如何将excel 文件放到VS的剪贴板中,再利用代码读取存储在剪贴板上的数据将其显示在winform的DataGridView中? 解决方案 C#操作EXCEL全解(代码) 提示:运行之前必须先引用Interop.Excel.dll模块 using System; using System.Collections.Generic; using System.Tex

Excel导入数据库

问题描述 各位大虾,小弟小弟现在有个"重大"问题,望各位出手帮助???先谢过了...本地有个几十M的Excle,当然有列头,数据有一定的形式,现在需要统计其中重复的记录,并找出重复的行号?本人的设想是先将数据直接导入数据库,然后根据数据库查询的特征,进行判断统计.现在我使用jcom解析excel(poi.jxl均通过测试,无法解析太大的Excle),获取每行,然后插入数据库,可是,事与愿违,数据是一行一行写入(insert),但是那个速度!!!!不敢恭维,前台一直处于等待中....所以

Excel导入数据库的一个小问题,请教高手

问题描述 在将Excel导入数据库时,数据库里那一列是整型的,我是用Convert.ToInt16(myDrv[2].ToString().Trim())将Excel中的字符转化为整形.但是在Excel中写入时,如果写得不规范,会存成左上角带着绿色小三角的情况,这时就会产生导入异常.请问如何解决? 解决方案 解决方案二:用户可能的输入太多要么规范Excel,要么捕获异常,记录并做相应处理解决方案三:可是我不知道怎么捕获这个异常,总得有个异常码是吧?引用1楼的回复: 用户可能的输入太多要么规范Ex

Excel导入数据库时出现的文本截断问题解决方案_mssql2008

问题 在把Excel导入到数据库中时,发生文本截断问题:即导入的数据每行只有一部分,原始的Excel数据为:     忽略错误 导入SQLServer2008过程中,如果源数据和目标数据类型不匹配会导入失败,所以导入数据时会忽略错误,这次导入题库也是,结果出现了这样的问题:  仔细观察你会发现,题目不完整,最长为25个汉字,很明显这是varchar(50)数据类型,但是源数据和目的数据明明都为文本类型. 不忽略错误 如果不忽略错误,导入数据最后一步会产生这样的问题: 复制代码 代码如下: -正在