工作一年了,很多事情经常要查询Excel表格数据,因为表格实在是太多了,每次都需要到处去找,好几次都受不了这种脑残的查询,今天决定学习一下怎么把Excel里的信息写入数据库去,方便以后查询。我思考了一下,做这个事情是因为有以下几个必要性。
一、你的Excel表太多,而且这些表的数据都是需要反复使用
二、表里的数据信息满足一定的结构,当然就是说这些信息是可以通过数据库建立相关的数据字典
三、你确实觉得这样的功能有时间去实现,实现了以后可以让你觉得是可以节约时间的
不然我劝大家还是知道这样的方法就可以了,没有必要将这个东西弄成系统。
因为我是学.NET出身的,这个系统也就是本地自己用用方便,并不需要考虑数据库的安全性,所以选择了Visual studio 2005和Sql Server 2005开发(因为之前有个了解,说是Sql2000的安全性要高)。写这个的目的只是为了解决问题,让我自己什么时候忘了方法还可以回来看看,方便自己理解。相信只要.NET入门级的人士都能通过我这篇东西来实现功能。有什么地方不足的,方法实现复杂的,结构模块不清晰的,欢迎大家指教。
首先,用户建立一个窗口界面,样子自己可以随便弄。功能的实现主要用到一个OpenFileDialog控件,该控件的ShowDialog方法可以弹出一个打开文件对话框。
///<summary>
///"打开文件"单击事件
///</summary>
private void buttonOpenFile_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog()! = DialogResult.OK)
returnl
ImportFile(this.openFileDialog.FileName);//ImportFile为数据导入数据库方法
}
///<summary>
///将Excel 文件 filename 中的数据导入到数据库表"XXX"中
///</summary>
///<param name=”filename“></param>
void ImportFile(string fileName)
{
//1 从Excel 中读取数据,放入DataSet对象中
DataSet dataSet = new DataSet();
try
{
OleDbConnection myConn = new OleDbConnection(@"Provider = Microsoft.Jet.OLEDB.4.0;Data Source=" + fileName +";Extended Properties = Excel 8.0;")
//其中这个Excel的链接可以通过Visual数据库连接测试里复制
myConn.Open();
OleDbDataAdapter adapter = new OleDbDataAdapter("Select * form [Sheet1$]", myConn);
OleDbCommandBuilder builder = new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
myConn.Close();
}
Catch (OleDbException ex)
{
MessageBox.Show(ex.Message);
}
foreach (DataRow row2 in dataSet.Tables[0].Rows)
{
string s列1 = row2[colname1].ToString();
string s列2 = row2[colname2].ToString();
...
sql = "";
sql += "insert into [数据库表] values (";
sql += "'" + s列1 + "'";
sql += "'" + s列2 + "'";
...
sql += ")";
db.ExecuteSQL(sql);
}
}