我现在有一批Excel文件,需要把它导入到SQL Server 2005的某一个表中去,
现在问题是,怎样把Excel中的数据导进去,用存储过程吗?还是用程序完成?
还有就是,怎样把Excel中的列和SQL Server中的列对应起来了?
现在问题是,怎样把Excel中的数据导进去,用存储过程吗?还是用程序完成?
还有就是,怎样把Excel中的列和SQL Server中的列对应起来了?
解决方案 »
- 求助:在winform中使用Devexpress的treeList的CheckBox的使用(当部分选中时父结点的显示状态,如使其成灰色状态)
- 有没有谁用过可以自己生成数据库表实体代码的工具或者有源码?
- 百度和GOOGLE了几个小时没解决--怎么断开当前某个连接(HTTP连接)
- vs2003代码同步的问题
- 在ArrayList里面保存了一个Object,如何使用这个Object内的函数呢??
- 帮帮忙吧!在WEB程序中如何在服务器端给自定义的控件的属性设置值?
- 请问下c#中Atrribute类的使用?
- 用同一个MediaPlayer控件同时播放视频和声音,视频要求静音。在线等!
- C#: winform--- 为什么不同时间打开同一子窗体,显示位置经常变?
- c#关于windows编程基本问题求教
- 有什么控件库可以截获指定进程的网络动作麽?(指定进程的封包截获如何做?)
- 简单问题,望有人解答。关闭由ShowDialog()方法调出的窗体问题。
insert into 表 select * from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
select * into 表 from
OPENROWSET('MICROSOFT.JET.OLEDB.4.0'
,'Excel 5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)
===
--将某个目录上的Excel表,导入到数据库中--将所有的Excel文件放到一个目录中,假设为c:\test\,然后用下面的方法来做create table #t(fname varchar(260),depth int,isf bit)
insert into #t exec master..xp_dirtree 'c:\test',1,1
declare tb cursor for select fn='c:\test'+fname from #t
where isf=1 and fname like '%.xls' --取.xls文件(EXCEL)
declare @fn varchar(8000)
open tb
fetch next from tb into @fn
while @@fetch_status=0
begin
--下面是查询语句,需要根据你的情况改为插入语句
--插入已有的表用:insert into 表 selct * from ...
--创建表用:select * into 表 from ...
set @fn='select * from
OPENROWSET(''MICROSOFT.JET.OLEDB.4.0'',''Excel 5.0;HDR=YES;DATABASE='+@fn+''',全部客户$)'
exec(@fn)
fetch next from tb into @fn
end
close tb
deallocate tb
drop table #t
{ //从文件得数据并导入
//上传的服务器临时目录
string FullPath=Page.Server.MapPath("..\\..\\")+"ExcelFolder\\TempFile\\"+Session.SessionID.ToString()+".Tmp";
FileImport.PostedFile.SaveAs(FullPath);
//从临时目录中连接Excel
OleDbConnection myConn=new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+FullPath+";Extended Properties=Excel 8.0;"); try
{
myConn.Open();
OleDbDataAdapter thisAdapter= new OleDbDataAdapter("SELECT * FROM [Sheet1$]",myConn);
OleDbCommandBuilder thisBuilder=new OleDbCommandBuilder(thisAdapter);
DataSet thisDataSet=new DataSet();
thisAdapter.Fill(thisDataSet);
DataTable dt1=thisDataSet.Tables[0];
object obj = Session["UserInfo"];
UserInfo userInfoObj = (UserInfo)obj;
CustomerLogic cusLogic = new CustomerLogic(); for(int i=0;i<dt1.Rows.Count;i++)
{
ContactDetailObj newConDetailObj = new ContactDetailObj();
newConDetailObj.First_Name = dt1.Rows[i][0].ToString();
newConDetailObj.Last_Name = dt1.Rows[i][1].ToString();
cusLogic.InsertContactDetail(newConDetailObj);
}
this.RegisterStartupScript("message","<script language='javascript' defer>alert('导入成功!');</script>");
}
catch(OleDbException ex)
{
this.RegisterStartupScript("message","<script language='javascript' defer>alert('导入失败!');</script>");
}
finally
{
myConn.Close();
} }
@filename varchar(200), --Excel文件名
@exceltablename varchar(20), --EXcel内表名
@tablename varchar(200) --将要存在数据库里的表名
as
declare @sql varchar(1000)
set @sql=' insert into '+@tablename+
' SELECT * '+
' FROM OpenDataSource(''Microsoft.Jet.OLEDB.4.0'',''Data Source='+@filename+
';User ID=Admin;Password=;Extended properties=Excel 5.0;HDR=yes;imex=1'')...['+@exceltablename+']'
exec(@sql)
go
{
OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + txtRemoteAddress.Text + ";" + "Extended Properties=Excel 8.0;");//HDR=Yes;IMEX=1
OleDbCommand command = new OleDbCommand();
command.CommandType = CommandType.Text;
command.CommandText = "select * from [目录$]";
command.Connection = connection;
connection.Open();
command.ExecuteNonQuery(); OleDbDataReader reader1 = command.ExecuteReader(); while (reader1.Read())
{
i++;
}
reader1.Close();
progressBar1.Minimum = 1;
progressBar1.Maximum = i;
progressBar1.Value = 1;
progressBar1.Step = 1; OleDbDataReader reader = command.ExecuteReader();
while (reader.Read())
{
decimal mPrice = 1.00M;
int iAmount = 0;
int iLendAmount = 0;
DateTime iInDate = DateTime.Today; if (reader["单价"] != DBNull.Value)
mPrice = Convert.ToDecimal(reader["单价"]); Equipment equ = new Equipment(Guid.NewGuid().ToString(),//GUID
"None",//Code
reader["代码"].ToString(),//Number
reader["名称"].ToString(),//Name
reader["每套数量"].ToString(),//Volume
reader["适用版本"].ToString(),// Publish
"None",//Modle
"None",//Type
"None",//Place
"None",//Factory
reader["载体"].ToString(),//Media
mPrice,//Price
iAmount,//Amount
"None",//Unit
iLendAmount,//LendAmount
reader["适用范围"].ToString(),//Grade
reader["学科"].ToString(),//Subject
"None",//State
iInDate,
"None",//OpeMan
"None",//Location
reader["年份"].ToString(),//Issue
"None");
label3.Text = reader["名称"].ToString();
equ.SaveToDB();
progressBar1.PerformStep(); }
}
catch (Exception ex)
{
Equman.Lib.DefValues.ConnString = _Conn;
label2.Text = ex.Message;
return;
}