Execel导入数据库
1、用sql语句
研究了老半天搜了好多方法,最后终于导进去了,不容易啊!
赶紧记下来,省得以后又忘了!
Select * into aa from openrowset('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=c:/aa.xls', 'SELECT * FROM [aa$]')
//这句是把C盘aa.xls的表aa的数据导入表 aa中
注意:不能用默认的sheet1需要重命名,要不他会报错,找不到isam 提供的程序
SELECT *FROM OPENROWSET( 'MICROSOFT.JET.OLEDB.4.0','Excel 8.0;IMEX=1;HDR=YES;DATABASE=你的excel.xls',[sheet1$])
特别注意:
1、这里只能连接本地数据库服务器执行,远程服务器会报错,另外路径和文件名不要用中文。
2、如果某一列的部分行是数字,部分行是字符串,可能会导致读取的数据中那部分字符串无法显示,处理方法先设置该列为文本列,如果设置为文本列仍然不能搞定的话,需要在该列的第一行数据上加', 如1234 ->'1234,保存后重新读取即可。
错误排查:
如果出现:服务器: 消息 7399,级别 16,状态 1,行 1OLE DB 提供程序 'MICROSOFT.JET.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。OLE DB 错误跟踪[OLE/DB Provider 'MICROSOFT.JET.OLEDB.4.0' IDBInitialize::Initialize returned 0x80004005: 提供程序未给出有关错误的任何信息。]。
请检查Excel文件的路径和Sheet页的名称是否正确,确认正确然后有错误的情况下更改Sheet页的名称后即可
2、用DTS即直接在企业管理器中导入即OK
.打开sqlserver 选择数据库 点击右健[所有任务]-[导入数据]
.按照向导 选择数据源 [micrsoft excel 97-2000] 选择要导入的文件
接下来的向导选择要导入到的数据库,该导入支持新建表,和表数据追加都可以,按照向导步骤操作就可以啦!
3、代码导入
/// <summary>
/// 导入execel
/// </summary>
public void dd(string path)
{
//convert Excel to SQL using OLEDB
//string path = txtExcel.Text;
string execelConnectionStr = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:/cc.xls;Extended Properties=""Excel 8.0;HDR=YES;""";
using (OleDbConnection conn = new OleDbConnection(execelConnectionStr))
{
OleDbCommand cmd = new OleDbCommand("select * FROM [sheet1$]", conn);
conn.Open();
using (DbDataReader dr = cmd.ExecuteReader())
{
// SQL Server Connection String
string sqlConnectionString = "server=.;uid=sa;pwd=sa;database=DB_Select";
// Bulk Copy to SQL Server
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConnectionString))
{
bulkCopy.DestinationTableName = "dd";
bulkCopy.WriteToServer(dr);
}
}
}
}