所需组件:
microsoft ado ext. 2.8 for ddl and security 或者更新的组件。
添加:
using ADOX;
using System.Runtime.InteropServices;
using System.IO;
然后利用OleDbCommand组件,设置其2个链接,一个链接负责查找并打开excel数据源,另一个链接负责将数据源插入到MDB文件中。
操作页面:
后台源码:
private void button1_Click(object sender, EventArgs e)
{
var MDbPath = this.txtMDBPath.Text; if (File.Exists(MDbPath) == false)
{
ADOX.Catalog catalog = new ADOX.Catalog(); dynamic cn = null; try
{
cn = catalog.Create(string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};", MDbPath));
}
finally
{
if (cn != null)
{
Marshal.FinalReleaseComObject(cn);
}
Marshal.FinalReleaseComObject(catalog);
} string excelPath = this.txtExcelPath.Text;
string excelConnection = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES\"", excelPath); using (System.Data.OleDb.OleDbConnection AccessConn = new System.Data.OleDb.OleDbConnection(excelConnection))
{
AccessConn.Open(); string insertCommandText = string.Format("SELECT * INTO [MS Access;DATABASE={0}].[Sheet1] from [Sheet1$];", MDbPath); using (System.Data.OleDb.OleDbCommand AccessCommand = new System.Data.OleDb.OleDbCommand(insertCommandText, AccessConn))
{
AccessCommand.ExecuteNonQuery();
}
AccessConn.Close();
}
}
MessageBox.Show("数据写入成功。");
}
注意:insertCommandText中数据源链接部分必须写:DATABASE=...,不能写Data Source=...,否则会出现“表已经存在”的异常。