前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder把excel文件中数据导入到数据窗口中-zhtch-ChinaUnix博客 Chinaunix首页 |  论坛 |  问答 |  博客 登录 | 注册 博文 博主 私人消息() 系统消息() 好友请求() 通知管理() 赵天川的网志 暂无签名 【原创评选】12-02月原创博文评选 2013第三季度“ChinaUnix博客之星”评选 2014中国数据库技术大会 首页 |  博文目录 |  关于我 zhtch 博客访问: 126476 博文数量: 161 博客积分: 1885 专家积分: 180--> 博客等级: 上尉 技术积分: 1240 用 户 组: 普通用户 注册时间: 2007-07-13 16:51 文章分类 全部博文(161) 网页设计(1) 数据库(16) 普九(2) 机器人教育(8) 未分配的博文(134) 文章存档 2013年(1) 2013年07月(1) 2012年(18) 2012年12月(2) 2012年07月(1) 2012年06月(4) 2012年05月(10) 2012年01月(1) 2011年(21) 2011年09月(1) 2011年07月(1) 2011年06月(3) 2011年05月(6) 2011年04月(2) 2011年02月(4) 2011年01月(4) 2010年(113) 2010年08月(6) 2010年06月(5) 2010年05月(8) 2010年04月(1) 2010年03月(8) 2010年02月(31) 2010年01月(54) 2009年(8) 2009年12月(2) 2009年11月(6) 我的朋友 最近访客 eleven12 清咖vivi 小尾巴鱼 订阅 推荐博文 ·解决Oracle锁表 ·正视心中野兽是与孩子共处的... ·NSLOOKUP使用及DNS污染检测... ·perl使用socket 发送二进制数... ·Linux内核设计与实现(17)--设... 热词专题 ·svn ·USB linux NCM usbnet驱动详... ·Android播放视频时找不到播放... ·冰箱也安卓 ·一个圈 PowerBuilder把excel文件中数据导入到数据窗口中 2012-06-05 10:04:45 分类: 数据库开发技术 /*****************简单的导入功能,涉及到数据类型判断*****************/ string ls_path,ls_name,ls_filterinteger li_retlong ll_rows,ll_columnsstring a[1000,100] //导入数据行数最大1000行,列数最大100列ls_filter = "Excel文件(*.xls),*.xls"li_ret = GetFileOpenName("请选择后缀名为XLS的文件",ls_path,ls_name,"xls",ls_filter)if li_ret <> 1 then return //建立OLE对象OLEObject ExcelServerExcelServer = create OLEObjectinteger li_excelli_excel = ExcelServer.ConnectToNewObject("excel.application")if li_excel < 0 then MessageBox("错误提示","连接excel失败,检查你的系统是否安装了office!") return end ifExcelServer.Workbooks.Open(ls_path,0,False)ExcelServer.Application.DisplayAlerts = Falsell_rows = ExcelServer.ActiveSheet.UsedRange.Rows.Count //取得总行数ll_columns= ExcelServer.ActiveSheet.UsedRange.columns.Count //取得总行数dw_grid.reset()if ll_rows = 0 then messagebox("提示!","没有Excel数据可导,请检查Excel表格后重来!") ExcelServer.Workbooks.close() ExcelServer.DisConnectObject() Destroy ExcelServer return end if//导入的excel文件行数是否超过1000 行if ll_rows >1000 then messagebox("错误提示!","导入的excel文件列数过大,无法导入!") ExcelServer.Workbooks.close() ExcelServer.DisConnectObject() Destroy ExcelServer return end if//导入的excel文件列数与所对应的数据窗口列数不一致,则提示integer li_columncount //得到数据窗口的总列数,总共14列li_columncount = integer(dw_grid.describe("datawindow.column.count"))if ll_columns <> li_columncount - 2 then messagebox("提示错误!","导入的excel文件列数与所对应的数据窗口类数不一致!") ExcelServer.Workbooks.close() ExcelServer.DisConnectObject() Destroy ExcelServer return end if//从excel文件导入到数据窗口,没有空行,字段,计算列字段都为字符串型//long m,n//for m = 1 to ll_rows// dw_grid.insertrow(0)// for n = 1 to ll_columns// a[m,n] = string(ExcelServer.ActiveSheet.Cells[m,n].value)// dw_grid.Setitem(m,n,a[m,n])// next//next//ll_null为空行数long m,amount,ll_nullamount = 0for m = 1 to ll_rows a[m,1] = String(ExcelServer.ActiveSheet.Cells[m,1].value) if len(a[m,1]) <> 0 then amount = amount+1 end ifnextll_null = ll_rows - amountlong i,li_countstring ls_textfor i=(ll_null+1+1) to ll_rows //+1+1即表中列名称算一行,从+1行读起 li_count = dw_grid.insertrow(0) dw_grid.setrow(li_count) //简称 dw_grid.object.clientcode_1[li_count] = ExcelServer.ActiveSheet.Cells[i,2].text //客户编码 dw_grid.object.clientcode[li_count] = ExcelServer.ActiveSheet.Cells[i,1].text //数期 ls_text = ExcelServer.ActiveSheet.Cells[i,3].text if not isnumber( ls_text ) and ls_text <> '' then messagebox("错误","第["+ string(i) + ',3]单元格必须是数字!') return else dw_grid.object.yyprd_bas_client_sq[li_count] = Long(ls_text) end if //信用额 if not isnumber(ExcelServer.ActiveSheet.Cells[i,4].text) and ExcelServer.ActiveSheet.Cells[i,4].text <> '' then messagebox("错误","第["+ string(i) + ',4]单元格必须是数字!') return else dw_grid.object.yyprd_bas_client_creditamount[li_count] = Dec(ExcelServer.ActiveSheet.Cells[i,4].text) end if //所属月份 if not isdate(ExcelServer.ActiveSheet.Cells[i,5].text) and ExcelServer.ActiveSheet.Cells[i,5].text <> '' then messagebox("错误","第["+ string(i) + ',5]单元格必须是日期!') return else dw_grid.object.months[li_count] = datetime(ExcelServer.ActiveSheet.Cells[i,5].text) end if //货币 dw_grid.object.currency[li_count] = String(ExcelServer.ActiveSheet.Cells[i,6].text) //汇率 if not isnumber(ExcelServer.ActiveSheet.Cells[i,7].text) and ExcelServer.ActiveSheet.Cells[i,7].text <> '' then messagebox("错误","第["+ string(i) + ',7]单元格必须是数字!') return else dw_grid.object.currencyrate[li_count] = dec(ExcelServer.ActiveSheet.Cells[i,7].text) end if //销售金额 if not isnumber(ExcelServer.ActiveSheet.Cells[i,8].text) and ExcelServer.ActiveSheet.Cells[i,8].text <> '' then messagebox("错误","第["+ string(i) + ',8]单元格必须是数字!') return else dw_grid.object.salesamount[li_count] = Dec(ExcelServer.ActiveSheet.Cells[i,8].text) end if //备注 dw_grid.object.yyprd_cdc_sales_remarks[li_count] = String(ExcelServer.ActiveSheet.Cells[i,9].text) //建立日期 ls_text = ExcelServer.ActiveSheet.Cells[i,10].text if isnumber(ls_text) and ls_text <> '' then messagebox("错误","第["+ string(i) + ',10]单元格必须是日期!') return else dw_grid.object.created_date[li_count] = datetime(ExcelServer.ActiveSheet.Cells[i,10].text) end ifnextmessagebox("提示","导入数据成功,请点击保存按钮提交到数据库!")ExcelServer.Workbooks.close()ExcelServer.DisConnectObject()Destroy ExcelServer 管理员在2009年8月13日编辑了该文章文章。 --> --> 阅读(1159) | 评论(0) | 转发(0) | 0 上一篇:把数据窗口里的数据保存为Excel文件 下一篇:PB操作Excel大全 相关热门文章 linux awk NSLOOKUP使用及DNS污染检测 ... iptable 基础配置详细教程 ... URL编码与解码 iframe自适应高度的多种方法... ABAP文章索引 数据库课程设计报告(仓库管理... 拼音汉字对照表 sql isnull函数的使用 Mysql开启远程连接方法... 一个简单的shell脚本问题... 网站如何做图片的防盗链功能呢... 如何将printf输出的字符(含有... 嵌入式linux wifi移植 libert... ? ? {?} 是否是对的 ,这么... 热门推荐 --> 给主人留下些什么吧!~~ 评论热议 请登录后评论。 登录 注册 关于我们 | 关于IT168 | 联系方式 | 广告合作 | 法律声明 | 免费注册 Copyright 2001-2010 ChinaUnix.net All Rights Reserved 北京皓辰网域网络信息技术有限公司. 版权所有 感谢所有关心和支持过ChinaUnix的朋友们 京ICP证041476号 京ICP证060528号