asp.net中将excel导入到sql2005中的代码

本人做仓库管理系统,用c#语言。问如何用一个按钮实现将外部的excel(最好word也可)导入到sql2005中。求代码。网上找了许多都不能用,求高手帮助。不要太复杂太长... 本人做仓库管理系统,用c#语言。问如何用一个按钮实现将外部的excel(最好 word也可)导入到sql2005中。求代码。网上找了许多都不能用,求高手帮助。不要太复杂太长,看不懂。邮箱103058183@qq.com 展开
 我来答
matrixkey
2011-08-29 · TA获得超过277个赞
知道答主
回答量:163
采纳率:0%
帮助的人:169万
展开全部
首先,肯定很长。
我做过这个功能,分3步。
第一步,校验Excel的数据是否符合条件,比如不能为空,数据类型不能冲突等等。
第二步,在数据库里创建临时表,表结构跟excel一模一样。把数据从excel照搬到临时表中。
第三步,根据过滤条件,把符合的数据从临时表中insert到对象表中。
//新文件名称
string newfile = name + lastName; //假定excel文件名 最终数据.excel
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("../../File/") + newfile + ";Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'";

insertTempTable(strConn); //存入临时表 包含第一步和第二步
insertAllTable(); //第三步

/// <summary>
/// 把数据从xls导入临时创建表
/// </summary>
/// <param name="conn"></param>
public void insertTempTable(string conn)
{
string strConn = conn;
//这里假设excel字段名称为 字段(序号,零件编号,零件名称,数量,价格)
//excel表名称为Matrixkey
string query = "SELECT [序号],[零件编号],[零件名称],[数量],[价格] FROM [Matrixkey$] Where [零件编号] <> '' ";

OleDbCommand oleCommand = new OleDbCommand(query, new OleDbConnection(strConn));

OleDbDataAdapter oleAdapter = new OleDbDataAdapter(oleCommand);
DataSet PartsDataSet = new DataSet();
oleAdapter.Fill(PartsDataSet, "[Matrixkey$]");

DBAccess dba = DBAccessFactory.CreateAccess(); //这是我的数据库操作类
//存储过程 createtmptable 用来创建临时表 结构跟excel一模一样
dba.ExecuteProcedure("createtmptable");

foreach (DataRow row in PartsDataSet.Tables[0].Rows)
{
if (row["价格"].ToString() == "")
{row["价格"] = "0.00";}

dba.ExecuteInsertSQL(row, "tmpparts"); //执行第2步 创建的临时表叫tmpparts
}
}

/// <summary>
/// 执行最终的插入存储过程
/// </summary>
public void insertAllTable()
{
DBAccess dba = DBAccessFactory.CreateAccess();
//存储过程BuildRelation用来实现第3步 这个就简单了 我写个例子你看看
dba.ExecuteProcedure("BuildRelation");
}

存储过程:BuildRelation
insert into 对象表 --假设对象表字段为 ID No Code Name Quantity Price 其中ID自增
select * from tmpparts
where 零件编号 not in (select Code from tmpparts)

学会了哇?
zhangbaohai001
2011-08-29 · TA获得超过143个赞
知道答主
回答量:53
采纳率:0%
帮助的人:30.8万
展开全部
先查询,然后一行一行insert
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
MD109
2011-09-04
知道答主
回答量:5
采纳率:0%
帮助的人:8473
展开全部
这些只适用于一般的二维表,复杂的格式就不行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式