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

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

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

EXCEL导入GridView,然后再汇入数据库.declare @strExcelName varchar(50)
EXCEL导入GridView,然后再汇入数据库.
set @strExcelName=c:\sl.xls
EXCEL导入GridView,然后再汇入数据库.
exec(select * into ##tmp from openrowset(‘‘MICROSOFT.JET.OLEDB.4.0‘‘,‘‘Excel 8.0;HDR=No;IMEX=1;DATABASE=+@strExcelName+‘‘‘,[Sheet1$]) )
EXCEL导入GridView,然后再汇入数据库.
select * from ##tmp

这样是可以导入数据,但是问题来了。我的数据库服务器和运行程序服务器不在同一服务器,无法导入(可能有方法,但是项目紧,没时间去探索),于是想到另外一个方法:先上传EXCEL文件,然后读入DATASET放入GridView,然后从GridView提交到数据库,这样就没有问题。
EXCEL导入GridView,然后再汇入数据库.文件上传控件:<input id="myFile" runat="server" type="file" />
EXCEL导入GridView,然后再汇入数据库.Form里不需要enctype="multipart/form-data"

文件上传代码:
EXCEL导入GridView,然后再汇入数据库.            if (myFile.PostedFile.FileName != "")
EXCEL导入GridView,然后再汇入数据库.            
{
EXCEL导入GridView,然后再汇入数据库.                
//上传文件的绝对路径
EXCEL导入GridView,然后再汇入数据库.
                string sFile = myFile.PostedFile.FileName;
EXCEL导入GridView,然后再汇入数据库.                
//获取文件全名
EXCEL导入GridView,然后再汇入数据库.
                sFile = sFile.Substring(sFile.LastIndexOf("\\"+ 1);
EXCEL导入GridView,然后再汇入数据库.                
//获取后缀名
EXCEL导入GridView,然后再汇入数据库.
                sFile = sFile.Substring(sFile.LastIndexOf("."));
EXCEL导入GridView,然后再汇入数据库.                
if (sFile.ToLower() != ".xls")
EXCEL导入GridView,然后再汇入数据库.                
{
EXCEL导入GridView,然后再汇入数据库.                    Response.Write(
"请选择Excel文件!");
EXCEL导入GridView,然后再汇入数据库.                    Response.End();
EXCEL导入GridView,然后再汇入数据库.                }

EXCEL导入GridView,然后再汇入数据库.                
//为了防止重名,获得日期为文件名年月日时分秒毫秒
EXCEL导入GridView,然后再汇入数据库.
                string datatime = System.DateTime.Now.ToString("yyyMMddHHmmssffff");
EXCEL导入GridView,然后再汇入数据库.                
//上传后文件的新名
EXCEL导入GridView,然后再汇入数据库.
                sFile = datatime + sFile;
EXCEL导入GridView,然后再汇入数据库.                
//AppDomain.CurrentDomain.BaseDirectory.ToString() 获取此项目的根目录
EXCEL导入GridView,然后再汇入数据库.                
//sPath 获取上传后的路径
EXCEL导入GridView,然后再汇入数据库.
                string sPath = AppDomain.CurrentDomain.BaseDirectory.ToString() + "ExcelFiles\\" + sFile;
EXCEL导入GridView,然后再汇入数据库.                
//上传文件
EXCEL导入GridView,然后再汇入数据库.
                myFile.PostedFile.SaveAs(sPath);
EXCEL导入GridView,然后再汇入数据库.                
this.myGridView.DataSource = GetExcelContent(sPath);
EXCEL导入GridView,然后再汇入数据库.                
this.myGridView.DataBind();
EXCEL导入GridView,然后再汇入数据库.            }

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

最后是数据提交到数据库代码:
EXCEL导入GridView,然后再汇入数据库.            string stresno = "";
EXCEL导入GridView,然后再汇入数据库.            
string stresname = "";
EXCEL导入GridView,然后再汇入数据库.            
foreach (GridViewRow row in this.myGridView.Rows)
EXCEL导入GridView,然后再汇入数据库.            
{
EXCEL导入GridView,然后再汇入数据库.                Label txtesno 
= (Label)row.FindControl("labresno");
EXCEL导入GridView,然后再汇入数据库.                stresno 
+= txtesno.Text.ToString().Trim().Replace("""‘‘"+ ";";
EXCEL导入GridView,然后再汇入数据库.
EXCEL导入GridView,然后再汇入数据库.                Label txtresname 
= (Label)row.FindControl("labresname");
EXCEL导入GridView,然后再汇入数据库.                stresname 
+= txtresname.Text.ToString().Trim().Replace("""‘‘"+ ";";
EXCEL导入GridView,然后再汇入数据库.            }

EXCEL导入GridView,然后再汇入数据库.            Response.Write(stresno 
+ "<br/>" + stresname);
EXCEL导入GridView,然后再汇入数据库.            Response.End();

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

上一篇:聚合查询、分组查询、F与Q查询、django中如何开启事务、orm中常用字段及参数、数据库查询优化(only与defer、select_related与prefetch_related)


下一篇:postgreSQL格式化时间的函数详解