Excel表数据导入到Sql数据库
代码如下:
string[] data = new string[3]; //定义一个数组用来用来存储 drd 中读取的数据
string filePathName = ""; //存储文件名
//定义一个打开文件对话框并设置相关属性
OpenFileDialog importFileDialog = new OpenFileDialog();
importFileDialog.AddExtension = true;
importFileDialog.CheckFileExists = true;
importFileDialog.CheckPathExists = true;
importFileDialog.Filter = "Excel表格文件(97-2003)(*.xls)|*.xls|Excel表格文件|*.xlsx";
importFileDialog.InitialDirectory = "3";
importFileDialog.Title = "选择导入的终端信息文件";
importFileDialog.Multiselect = false;
//判断用户是不是选择了“打开”操作
if (importFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
filePathName = importFileDialog.FileName;
string strConn = "";
//判断文件扩展名是否是.xlsx
if (filePathName.Substring(filePathName.Length - 5).ToLower() == ".xlsx")
{
strConn = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePathName + "';Extended Properties='Excel 12.0;HDR=YES'";
}
//判断文件扩展名是否是.xls
else if (filePathName.Substring(filePathName.Length - 4).ToLower() == ".xls")
{
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" + filePathName + "';Extended Properties='Excel 8.0;HDR=YES;'";
}
else
{
MessageBox.Show("选择的文件不合法!");
return;
}
OleDbConnection conn = new OleDbConnection(strConn);
string strSqlConn = "Data Source=(local);Initial Catalog=IMPORT;Persist Security Info=False;User ID=sa; pwd = sa";
SqlConnection sqlConn = new SqlConnection(strSqlConn);
sqlConn.Open();
if (conn.State.ToString() == "Closed")
conn.Open();
// 读取文件语句
string strSql = "SELECT * FROM [sheet1$]";
OleDbCommand cmmd = new OleDbCommand(strSql, conn);
OleDbDataReader drd = cmmd.ExecuteReader();
//开始读取 drd 中的数据,读取数据要确保Excel中每列的数据为对应该数据库表格中的数据
//有一点要注意,在读Excel时,是不读第一行数据的。
//(至于为什么我也不知道,我想可能是特意跳Excel的标题行吧)
while (drd.Read())
{
data[0] = drd[0].ToString();
data[1] = drd[1].ToString();
data[2] = drd[2].ToString();
//*********************这一块可以单独分离出来*********
//定义插入Sql语句
//此处我的数据库表中的字段如下
//[ImportField1],[ImportField2],[ImportField3]
StringBuilder sbSql = new StringBuilder();
sbSql.Append("INSERT INTO [tbImport]");
sbSql.Append(" (");
sbSql.Append(" [ImportField1]");
sbSql.Append(",[ImportField2]");
sbSql.Append(",[ImportField3]");
sbSql.Append(") VALUES (");
sbSql.Append(String.Format("'{0}',", data[0]));
sbSql.Append(String.Format("'{0}',", data[1]));
sbSql.Append(String.Format("'{0}',", data[2]));
sbSql.Append(");");
SqlCommand sqlCmmd = new SqlCommand(sbSql.ToString(), sqlConn);
//****************************************************
sqlCmmd.ExecuteNonQuery();
}
conn.Close();
sqlConn.Close();
MessageBox.Show("数据导入成功。");
}