在用户还没有信息化之前,他们的数据往往是存放于Excel中的。因此,MIS项目的第一步,就是要将这些数据初始化到数据库中。借助于.NET中的SqlDataSource控件,可以轻松的实现这一过程。
首先,要对现有的Excel表格做一些调整,不要产生合并行,合并列,将首行作为标题行。然后,打开控制面板->管理工具中的数据源对话框,添加一个Excel数据源。
接着,在VS工程箱中将一个SqlDataSource数据源控件添加到页面中,选择ODBC,从而可以得到刚刚设置好的Excel文件。下面配置SQL语句的的一步很关键,一定要选择自定义SQL语句,在文本框内输入如下表达式下:
SELECT
*
FROM
[
SHEET1$
]
“sheet1”代表Execl标签页的名称。此时,在预览窗口上可以看到Excel中的第一行被解读为了表头。
这样一来,就可以通过SqlDataSource将Excel中的数据存转为一个DataSet,然后再遍历该数据集,从而将数据插入到新表中。
protected
void
Page_Load(
object
sender, EventArgs e)
{
DataSourceSelectArguments arg = new DataSourceSelectArguments();
System.Data.DataView dv = (System.Data.DataView)SqlDataSource1.Select(arg);
int len = GridView1.Rows.Count;
for ( int i = 0 ; i < len; i ++ )
{
string strInsert = " INSERT INTO PMIS.A (BM,PJXM,BZF,PFBZ,CZFF,PFFF,BZ,SSBM,JB) VALUES(BM,:PJXM,:BZF,:PFBZ,:CZFF,:PFFF,:BZ,:SSBM,:JB) " ;
comm = new OracleCommand(strInsert, conn);
comm.Parameters.AddWithValue( " :BM " , dv.Table.Rows[i][ " a " ].ToString());
// ......
comm.ExecuteNonQuery();
}
}
{
DataSourceSelectArguments arg = new DataSourceSelectArguments();
System.Data.DataView dv = (System.Data.DataView)SqlDataSource1.Select(arg);
int len = GridView1.Rows.Count;
for ( int i = 0 ; i < len; i ++ )
{
string strInsert = " INSERT INTO PMIS.A (BM,PJXM,BZF,PFBZ,CZFF,PFFF,BZ,SSBM,JB) VALUES(BM,:PJXM,:BZF,:PFBZ,:CZFF,:PFFF,:BZ,:SSBM,:JB) " ;
comm = new OracleCommand(strInsert, conn);
comm.Parameters.AddWithValue( " :BM " , dv.Table.Rows[i][ " a " ].ToString());
// ......
comm.ExecuteNonQuery();
}
}
注意,以上的方法中Excel文件不能存放在桌面上,否则会遇到权限的问题。