利用SQL语句操作EXCEL

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();
 

你可能感兴趣的:(dotNet)