分享

利用SQL语句操作EXCEL

 宇哥小屋 2020-06-15

CSDN经常有网友发贴询问对于Excel的导入导出问题,针对Excel操作.Net本身提供了类库,可以通过创建工作区等等相关操作来进行Excel编程,但其实Excel本身就是微软Office家族的成员,它还可以视为数据库,那么我们大可以通过sql文来做些文章。当然sql操作Excel还是有其限制,不能成为绝对的替代方案,读者需要视自己的需求情况而定。

1.将数据库数据导入Excel  

 

 

               
                //代码片断
                string strCmd = string.Empty;
                OleDbConnection conn = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;HDR=No';" + "Data Source= " + "C:/Documents and Settings/Administrator桌面/test.xls");//注意连接字符串中的相关参数
                OleDbCommand cmd = new OleDbCommand();
                cmd.Connection = conn;


                conn.Open();
                strCmd = "create Table [Sheet1](";
                foreach (DataColumn dc in ds.Tables[0].Columns)//假设数据库中数据已加载至数据集ds中
                ...{
                    strCmd += "[" + dc.ColumnName + "] nvarchar(20),";//获取列名信息,拼写sql文,创建表
                }
                strCmd = strCmd.Trim().Substring(0, strCmd.Length - 1);
                strCmd += ")";
                cmd.CommandText = strCmd;

                cmd.ExecuteNonQuery();

                foreach (DataRow dr in ds.Tables[0].Rows)
                ...{
                    if (dr.RowState != System.Data.DataRowState.Deleted)
                    ...{
                        strCmd = "insert into [Sheet1] values(";
                        foreach (DataColumn dc in ds.Tables[0].Columns)
                        ...{
                            strCmd += "'" + dr[dc.ColumnName].ToString() + "',";
                        }

                        strCmd = strCmd.Substring(0, strCmd.Length - 1);
                        strCmd += ")";

                        cmd.CommandText = strCmd;//获取数据,拼写sql文,插入数据

                        cmd.ExecuteNonQuery();


                    }
                }                
                conn.Close();

 

 2.将Excel中部分内容导入SqlServer数据库

    首先这里说的部分内容是针对列,假设Excel有N列,而我们只需要把关心的几列内容导入SqlServer的表中

 

// 利用Opendatasource函数将excel导入sqlserver 
                string strSQL = "SELECT userId,username INTO usertable FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0','Data Source=d:/test.xls;Extended Properties=Excel 8.0')...[Sheet1$]";//将sheet1中userId,和username两列导入本地sqlserver的SCSIM库usertable表中,注意sql语句,此列语句表示sqlserver当前还没有usertable表
                OleDbConnection scon = new OleDbConnection("Provider=SQLOLEDB;Data Source=(local);Initial Catalog=SCSIM;User ID=sa;Password=");       //注意自行配置sqlserver连接字符串              
                scon.Open();
                OleDbCommand scmd = new OleDbCommand(strSQL, scon);               
                scmd.ExecuteNonQuery();
                scon.Close();
                                      

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多