首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教个数据库中数据导入excel 中的问题 [已结贴,结贴人:xiaoniao_28]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:02:46 楼主
    数据库中的数据比较多 所以采用的不是循环写入的方式 速度太慢。
    数据库中的字段有不同类型的 我是全部转换成string 类型
    用二维数组的形式一次性写入 excel Range中
    写入没问题
    关键是写入之后本来在数据库中的money类型的数据在excel中
    右上角都有个单引号  表示它为字符型的数据
    我想去掉这个单引号,想请教个怎么调整下
    也请知道的大侠们帮帮忙。。。
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:03:221楼 得分:0
    有点急,请大家帮帮捧场。
     
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:10:022楼 得分:20
    我是全部转换成string类型  <--问题

    Try changing money data to Double before writing to Excel Range.

    vals[1,1] = double.Parse( vals[1,1].ToString );
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:20:383楼 得分:0
    楼上的
    照你这么说就是一列一列的写入 Excel Range.了
    我是一次性写入的  这样速度会有影响吧
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:21:524楼 得分:0
    贴点代码出来看看
    C# code
    string [,] arrayLast=new string[rowCount,coulumnCount]; colIndex = 0; rowIndex=0; try { foreach(DataRow row in table.Rows) { foreach(DataColumn col in table.Columns) { arrayLast[rowIndex,colIndex]=row[col.ColumnName].ToString(); colIndex++; } rowIndex++; colIndex = 0; } } catch(Exception ex) { MessageBox.Show(ex.Message); } Excel.Range dataRangeLast=excelWorkSheetLast.get_Range(excelWorkSheetLast.Cells[2,1],excelWorkSheetLast.Cells[rowCount+1,coulumnCount]); dataRangeLast.Value2=arrayLast;
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • syeerzy
    • 等级:
    发表于:2008-05-14 10:24:035楼 得分:10
    为什么不用 ADO.NET 直接写Excel呢???

    用OleDbConncetion直接连接到空的Excel文件上, 做跨库插入操作,  或者直接使用SqlServer的导入导出API都非常方便,并且不需要你全部转string.
    效率还比你这个高得多.


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:27:366楼 得分:0
    楼上的高手给个具体的方法
    谢谢啦

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:28:567楼 得分:0
    为什么不用 ADO.NET 直接写Excel呢???
    这个用的就是ADO.NET 取得数据然后再操作的啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:38:248楼 得分:0
    有没有其他的解决方法啊?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:43:279楼 得分:10
    设置那一列的格式
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:56:4910楼 得分:0
    借LZ的帖子也问个EXCEL的问题。

    比如 “02” 这种字符,为了在生成EXCEL后不当作数字来处理,可以加个“'” 号 即 “'02”,这样在生成的EXCEL文件中确实当作字符处理,并且没有显示 "'" ,但是在用EXCEL控件呈现数据的时候,确有这个单引号,请问该如何解决呢?
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 10:57:3911楼 得分:0
    孟子大哥终于出现了
    我也这么想的
    可我再保存之后用鼠标操作 一列的调整都不管用
    每个小格都要忽略下错误才能改过来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 13:37:2512楼 得分:0
    excel 有个小三角的小提示
    选择无视错误就没有问题了
    我想问用代码怎么操作了。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:40:0913楼 得分:0
    救命啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 14:54:4114楼 得分:5
    用 ADO.NET 直接写Excel
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:34:1015楼 得分:0
    楼上的说具体点萨
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-14 16:41:3216楼 得分:55
    string [,] arrayLast=new string[rowCount,coulumnCount];

    object[,] arrayLast=new object[rowCount,coulumnCount];        //
    //...
    arrayLast[1,1] = double.Parse( arrayLast[1,1].ToString() );    //该是浮点的,换成浮点数
    //...
    dataRangeLast.Value2=arrayLast;


    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-05-15 10:21:5717楼 得分:0
    楼上的是个不错的办法 试试先  谢了。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
    Copyright © 2000-2007, CSDN.NET, All Rights Reserved