A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 付茂炯 中级黑马   /  2012-2-23 16:21  /  3459 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 付茂炯 于 2012-3-4 17:24 编辑

现在手里有一个excel的数据源,想要把excel里的数据导入到sqlserver的表table1里,
table1的结构和excel的表结构式一样的,只比excel多个一个id列。

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

3 个回复

倒序浏览
借助第三方控件npoi,即可以从数据库中导出数据也可以把数据改入数据库中,请搜索npoi即可找到满意答案!

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

回复 使用道具 举报
安超 发表于 2012-2-23 19:06
借助第三方控件npoi,即可以从数据库中导出数据也可以把数据改入数据库中,请搜索npoi即可找到满意答案! ...

嗯,这个确实对我有帮助。O(∩_∩)O谢谢。
回复 使用道具 举报
上传文件并获取上传文件的绝对路径,拼到连接oledb数据库字符串中,
打开本地数据库链接(本地数据库链接字符串),定义插入sql语句字符串。
打开Excel链接,定义获取excel表中需要的数据的sql语句字符串,
数据适配器,数据集。
OLEDB对象用SQL语句SELECT读取EXCEL内容,详细代码可以百度,很多很多
一:占内存
因为要两次使用相同的数据源,所以用DataTable比较实用
把取到的EXCEL数据填充到DATASET对象。
FOR循环执行SQL INSERT语句,循环为:
for(int i=0;i<DataTable.Rows.Count;i++)
{

}
二:只读,不占内存
不用数据适配器,和数据集。
oledbDataReader reader=cmd.execReader();
while(reader.reader())
{
进行读取操作。
并且插入操作。
注意。最好定义一个方法传入参数来进行插入,不然会报异常,因为你是在只读的情况中读取数据,而不是对数据库进行本地操作。
}
三:excel好像自带导入到数据库中的功能

就这三个思路,我想应该都可以,可能是批量操作,最好在一个连接中一次性操作插入。
如果不能,还请多多指教,其他方法。

其实你只要把excel想成一个数据库就是了,每一页sheet1$就是它的一张表。
就好比是把一个数据库中的某些需要的数据导入到另一个数据库中的表中。
当然有两个字符串连接到不同的数据库和两个SqlCommand,OledbCommand,其实大同小异。
我的本本电脑没有MSOffice办公软件,我用的是WPS。好像不支持,所以不能敲代码了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马