社区
ASP
帖子详情
从excel向sqlserver数据库导入数据出错
miaoyu04
2009-06-24 01:17:32
使用asp将本地excel上传至服务器端,并从服务器端读取该excel文件,将数据导入sqlserver中。
本来在本机器上测试时成功的,但将程序放到远程服务器上就出现问题了,读取不到数据,工作表名称也读不到.不知道什么原因,服务器上装了offices的。
...全文
38
5
打赏
收藏
从excel向sqlserver数据库导入数据出错
使用asp将本地excel上传至服务器端,并从服务器端读取该excel文件,将数据导入sqlserver中。 本来在本机器上测试时成功的,但将程序放到远程服务器上就出现问题了,读取不到数据,工作表名称也读不到.不知道什么原因,服务器上装了offices的。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
miaoyu04
2009-06-24
打赏
举报
回复
up一下
希望各位老大们不吝啬赐教
miaoyu04
2009-06-24
打赏
举报
回复
我把路劲输入来
是没有错的
lihan6415151528
2009-06-24
打赏
举报
回复
是你的路径错误了吧
miaoyu04
2009-06-24
打赏
举报
回复
权限没问题
路径没问题
文件名没问题
mahui19780126
2009-06-24
打赏
举报
回复
路径对不对,上传后excel文件名有没有改变,服务器权限有没有设置。
c#实现
excel
数据
高效
导入
到sql
数据
库
本文实现在c#中可高效的将
excel
数据
导入
到
sqlserver
数据
库
中,很多人通过循环来拼接sql,这样做不但容易
出错
而且效率低下,最好的办法是使用bcp,也就是System.Data.SqlClient.SqlBulkCopy 类来实现。不但速度快,而且代码简单,下面测试代码
导入
一个6万多条
数据
的sheet,包括读取(全部读取比较慢)在我的开发环境中只需要10秒左右,而真正的
导入
过程只需要4.5秒。
Excel
导入
SQL
数据
库
SP操作
Excel
技术总结 目录 一、 环境配置 二、 ASP对
Excel
的基本操作 三、 ASP操作
Excel
生成
数据
表 四、 ASP操作
Excel
生成Chart图 五、 服务器端
Excel
文件浏览、下载、删除方案 六、 附录 正文 一、 环境配置 服务器端的环境配置从参考资料上看,微软系列的配置应该都行,即: 1.Win9x+PWS+Office 2.Win2000 Professional+PWS+Office 3.Win2000 Server+IIS+Office 目前笔者测试成功的环境是后二者。Office的版本没有特殊要求,考虑到客户机配置的不确定性和下兼容特性,建议服务器端Office版本不要太高,以防止客户机下载后无法正确显示。 服务器端环境配置还有两个偶然的发现是: 1. 笔者开发机器上原来装有金山的WPS2002,结果
Excel
对象创建始终出现问题,卸载WPS2002后,错误消失。 2. 笔者开发ASP代码喜欢用FrontPage,结果发现如果FrontPage打开(服务器端),对象创建出现不稳定现象,时而成功时而不成功。扩展考察后发现,Office系列的软件如果在服务器端运行,则
Excel
对象的创建很难成功。 服务器端还必须要设置的一点是COM组件的操作权限。在命令行键入“DCOMCNFG”,则进入COM组件配置界面,选择Microsoft
Excel
后点击属性按钮,将三个单选项一律选择自定义,编辑中将Everyone加入所有权限。保存完毕后重新启动服务器。 客户端的环境配置没发现什么特别讲究的地方,只要装有Office和IE即可,版本通用的好象都可以。 二、 ASP对
Excel
的基本操作 1、 建立
Excel
对象 set obj
Excel
App = CreateObject("
Excel
.Application") obj
Excel
App.DisplayAlerts = false 不显示警告 obj
Excel
App.Application.Visible = false 不显示界面 2、 新建
Excel
文件 obj
Excel
App.WorkBooks.add set obj
Excel
Book = obj
Excel
App.ActiveWorkBook set obj
Excel
Sheets = obj
Excel
Book.Worksheets set obj
Excel
Sheet = obj
Excel
Book.Sheets(1) 3、 读取已有
Excel
文件 strAddr = Server.MapPath(".") obj
Excel
App.WorkBooks.Open(strAddr & "\Templet\Table.xls") set obj
Excel
Book = obj
Excel
App.ActiveWorkBook set obj
Excel
Sheets = obj
Excel
Book.Worksheets set obj
Excel
Sheet = obj
Excel
Book.Sheets(1) 4、 另存
Excel
文件 obj
Excel
Book.SaveAs strAddr & "\Temp\Table.xls" 5、 保存
Excel
文件 obj
Excel
Book.Save (笔者测试时保存成功,页面报错。) 6、 退出
Excel
操作 obj
Excel
App.Quit 一定要退出 set obj
Excel
App = Nothing 三、 ASP操作
Excel
生成
数据
表 1、 在一个范围内插入
数据
obj
Excel
Sheet.Range("B3:k3").Value = Array("67", "87", "5", "9", "7", "45", "45", "54", "54", "10") 2、 在一个单元格内插入
数据
obj
Excel
Sheet.Cells(3,1).Value="Internet Explorer" 3、 选中一个范围 4、 单元格左边画粗线条 5、 单元格右边画粗线条 6、 单元格上边画粗线条 7、 单元格下边画粗线条 8、 单元格设定背景色 9、 合并单元格 10、 插入行 11、 插入列 四、 ASP操作
Excel
生成Chart图 1、 创建Chart图 obj
Excel
App.Charts.Add 2、 设定Chart图种类 obj
Excel
App.ActiveChart.ChartType = 97 注:二维折线图,4;二维饼图,5;二维柱形图,51 3、 设定Chart图标题 obj
Excel
App.ActiveChart.HasTitle = True obj
Excel
App.ActiveChart.ChartTitle.Text = "A test Chart" 4、 通过表格
数据
设定图形 obj
Excel
App.ActiveChart.SetSourceData obj
Excel
Sheet.Range("A1:k5"),1 5、 直接设定图形
数据
(推荐) obj
Excel
App.ActiveChart.SeriesCollection.NewSeries obj
Excel
App.ActiveChart.SeriesCollection(1).Name = "=""333""" obj
Excel
App.ActiveChart.SeriesCollection(1).Values = "={1,4,5,6,2}" 6、 绑定Chart图 obj
Excel
App.ActiveChart.Location 1 7、 显示
数据
表 obj
Excel
App.ActiveChart.HasDataTable = True 8、 显示图例 obj
Excel
App.ActiveChart.DataTable.ShowLegendKey = True 五、 服务器端
Excel
文件浏览、下载、删除方案 浏览的解决方法很多,“Location.href=”,“Navigate”,“Response.Redirect”都可以实现,建议用客户端的方法,原因是给服务器更多的时间生成
Excel
文件。 下载的实现要麻烦一些。用网上现成的服务器端下载组件或自己定制开发一个组件是比较好的方案。另外一种方法是在客户端操作
Excel
组件,由客户端操作服务器端
Excel
文件另存至客户端。这种方法要求客户端开放不安全ActiveX控件的操作权限,考虑到通知每个客户将服务器设置为可信站点的麻烦程度建议还是用第一个方法比较省事。 删除方案由三部分组成: A: 同一用户生成的
Excel
文件用同一个文件名,文件名可用用户ID号或SessionID号等可确信不重复字符串组成。这样新文件生成时自动覆盖上一文件。 B: 在Global.asa文件中设置Session_onEnd事件激发时,删除这个用户的
Excel
暂存文件。 C: 在Global.asa文件中设置Application_onStart事件激发时,删除暂存目录下的所有文件。 注:建议目录结构 \Src 代码目录 \Templet 模板目录 \Temp 暂存目录 六、 附录
出错
时
Excel
出现的死进程出现是一件很头疼的事情。在每个文件前加上“On Error Resume Next”将有助于改善这种情况,因为它会不管文件是否产生错误都坚持执行到“Application.Quit”,保证每次程序执行完不留下死进程。 补充两点: 1、其他
Excel
具体操作可以通过录制宏来解决。 2、服务器端打开SQL企业管理器也会产生问题。 New Document
excel
导入
sql2005的几种方法归纳
[SQL]将
Excel
表
数据
导入
SQL Server2005的几种方法归纳
数据
库
2010-07-27 11:14:26 阅读201 评论0 字号:大中小 订阅 近日在巨轮着手车间负荷
数据
处理,反馈回来的
数据
是保存在
Excel
文件中的,我必须将其
导入
SQL Server2005中,供存储过程计算。 由于之前没有将
Excel
数据
导入
SQL Server2005的经验,因此摸索着花了一天时间才搞定。下面将网上收集到的几种
导入
方法做个归纳。 方法一、利用SQL Server2005自带的DTS工具,手工
导入
: 第一步是点击开始并选择运行并输入CMD然后在命令提示符里输入DTSWIZARD。SQL Server
导入
和导出向导的欢迎界面将显示出来,如下图所示:(也可以这样打开该界面:1、登录到 SQL Server Management Studio。2、在 “对象资源管理器 ”中右键单击 “管理 ”,在弹出列表中单击 “
导入
数据
”。) 当你点击下一步按钮时,它将进入选择
数据
源向导界面。用户应该选择
数据
源为Microsoft Office 12.0 Access Database Engine OLE DB Provider 然后在向导界面中点击属性…按钮,它将弹出
数据
链接属性界面。在所有标签页中,双击
数据
源属性值并输入电子
数据
表的位置,例如“C:\
Excel
2007\Import\SampleData.xlsx”作为
导入
数据
的
数据
源的Microsoft Office
Excel
2007文件名称和路径。然后双击扩展属性并选择
Excel
12.0作为属性值。 到Microsoft Office
Excel
2007的连接可以通过点击测试连接按钮来进行测试,如下图所示: 在下一个页面中,
数据
源需要选为SQL Native Client,因为
数据
将
导入
到SQL Server 2005。然后你需要选择
数据
所要
导入
的服务器名称,并需要配置合适的验证模式,它之后跟着
数据
库
名称。 在这个例子中,我们将使用windows验证连接到本地SQL Server实例,所使用的
数据
库
将是Import
Excel
。 在Specify Table Copy or Query(指定表复制或查询)向导界面中,选择copy data from one or more tables or views(从一个或多个表或视图复制
数据
)选项,并继续这个向导到下一个界面。 在Select Source Table and Views(选择源表和视图)向导界面中,用户需要在源中选择雇员电子
数据
表,然后在目标中就可以看到Import
Excel
.dbo.Employee了。之后点击Edit Mappings…(编辑匹配…),扫描电子
数据
表中的可用
数据
,如果
数据
类型与SQL Server所建议的不同的话那么指定
数据
类型。 在Save and Execute Package(保存和执行包)向导界面中,有两个选项叫做Execute Immediately(立即执行)和Save SSIS Package as file system(保存SSIS包为文件系统)。你可以选择任何一个选项然后点击Finish(完成)按钮来运行和结束这个包配置。 方法二、在查询分析器里,直接写 SQL语句: 1、如果是
导入
数据
到现有表,则采用 INSERT INTO 表 SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'
Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 的形式 2、如果是
导入
数据
并新增表,则采用 SELECT * INTO 表 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'
Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 的形式。 以上语句是将
EXCEL
文件里 SHEET1工作表中所有的列都读进来,如果只想导部分列,可以 INSERT INTO 表 (a1,a2,a3) SELECT a1,a2,a3 FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'
Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$) 其实可以将 OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'
Excel
5.0;HDR=YES;DATABASE=c:\test.xls',sheet1$)当成一个表,例如我就写过这样一个句子: INSERT INTO eval_channel_employee(channel,employee_id) SELECT CASE a.渠道 WHEN 'DIY' THEN 1 WHEN 'RDC' THEN 0 WHEN 'KCM' THEN 2 ELSE 3 END ,b.id FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0' ,'
Excel
5.0;HDR=YES;DATABASE=c:\temp\name.xls',sheet1$) AS a,pers_employee b WHERE a.员工编码 =b.code 不管是哪种方式,哪种途径,系统都会默认将第一行上的内容作为字段名。 3、利用C#自己开发
数据
导入
小工具 //连接串 string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties=
Excel
8.0;Data Source=" + [
EXCEL
文件,含路径] + ";"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataTable dtSchema = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables,new object[] {null, null, null, "TABLE"}); DataSet ds = new DataSet(); //一个
EXCEL
文件可能有多个工作表,遍历之 foreach( DataRow dr in dtSchema.Rows ) { string table = dr["TABLE_NAME"].ToString(); string str
Excel
= "SELECT * FROM [" + table + "]"; ds.Tables.Add(table); OleDbDataAdapter myCommand = new OleDbDataAdapter(str
Excel
,conn); myCommand.Fill(ds,table); } conn.Close(); 这样,读取出来的
数据
就藏在 DataSet里了。 采用这种方式,
数据
库
所在机器不必装有
EXCEL
。 总结: 当
Excel
表中
数据
完整时,利用SQL自带的
导入
工具手工
导入
比较方便。当
数据
不完整或
数据
格式对应不上时,使用
导入
工具会
出错
,利用SQL查询语句就更便捷。当结合以上两种方法的优点,利用C#自己开发出
数据
导入
工具是最佳选择。
Excel
读取和大
数据
批量
导入
数据
库
ASPNET源码
本程序比较简单,就实现了
excel
的读取、存入
数据
库
,其实写入
数据
库
用的SqlBulkCopy大
数据
批量
导入
二、菜单功能 页面就实现了两个功能 1、不需要使用
数据
,直接读取
excel
并显示出来; 2、读取
excel
并写入
数据
库
,这里用SqlBulkCopy实现大
数据
批量
导入
数据
库
三、注意事项 1、开发环境为Visual Studio 2010,
数据
库
为
SQLServer
2008r2,使用.net 2.0开发。
WinForm读取
Excel
并
导入
到
数据
库
相应的表里
WinForm读取
Excel
并
导入
到
数据
库
相应的表里(有图有真相) 代码完整,如果是第一次 用WinForm 读取
Excel
数据
的人 可以将代码直接Copy过去,不会
出错
也不需添加引用,并包含一个C#操作
Excel
类,功能比较全,有兴趣的人可以看看
ASP
28,391
社区成员
357,060
社区内容
发帖
与我相关
我的任务
ASP
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
复制链接
扫一扫
分享
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章