学院首页 软件应用 编程开发 创意设计 认证培训 软件论坛
ASP ASP.NET PHP JSP SQL MYSQL Java VB

您的位置:学院 >> 编程开发 >> PowerBuilder >> 利用剪贴板实现PB与Excel的中文数据传输


利用剪贴板实现PB与Excel的中文数据传输



  PowerBuilder是面向对象的数据库开发工具之一,它可以操纵众多大型数据库和桌面数据库,支持多种硬件平台。但由于它提供的打印函数太少,使得制作打印报表很不方便,特别是对中国式报表,为此,我们在PB中常借助 Excel进行制表。但是在PB中用OLE与Excel进行中文数据传输时,数据传到Excel后会出现乱码,原来的中文变成了一堆不可辨认的字符。为解决此问题,我们可以借助Windows的剪贴板。
  在PB中,先将数据放入剪贴板中,然后,运行一段事先在Excel中用VBA编写的宏代码,该宏的主要功能是从剪贴板中读取数据,再将数据填入Excel表格中。剪贴板在其中起到了“中介”的作用。具体实现方法如下:
  首先,在PB下建立一窗口w—excel,然后在窗口中建立一个单行编辑框sle—text与一个按钮cb—trans,同时在按钮cb—trans的clicked事件中编写脚本,脚本为:
  //建立一个与Excel通讯的OLEObject
  OLEObject ExcelServer
  integer ExcelOK
  ExcelServer = CREATE OLEObject
  ConnectExcel:
  ExcelOK = ExcelServer.ConnectToNewObject( ″excel.application″ )
  if ExcelOK<>0 then
  answer=MessageBox(″打印报表错误″,″连接不到 Excel″,Exclamation!,RetryCancel!)
  if answer=1 then
  goto ConnectExcel
  elseif answer=2 then
  return
  end if
  end if
  ExcelServer.Application.Visible = TRUE
  //显示Excel
  ExcelServer.WorkBooks.open(″FileName″)
  //连接到文件
  //选择活动的Excel工作簿
   ExcelServer.ActiveWorkBook.Sheets(″sheet1″).Select
  clipboard(sle—text) //将数据放入剪贴板中
  //运行Excel文档中的VBA宏
  //第一个参数为宏名,第二、三个参数为填入Excel表格的行列值
   ExcelServer.application.run(″PutExcel″,1,1)
  在Excel文档中编写的宏代码为:
  Const CF—TEXT = 1
  Private Declare Function GetFocus Lib ″user32″ () As Long
  Private Declare Function OpenClipboard Lib ″user32″ (ByVal hWnd As Long) As Long
  Private Declare Function CloseClipboard Lib ″user32″ () As Long
  Private Declare Function GetClipboardData Lib ″user32″ (ByValwFormat As Long) As Long
  Private Declare Function IsClipboardFormatAvailable Lib ″user32″(ByVal wFormat As
  Long) As Long
  Private Declare Function GlobalLock Lib ″kernel32″ (ByVal hMen As Long) As Long
  Private Declare Function GlobalUnlock Lib ″kernel32″ (ByVal hMen As Long) As Long
  Private Declare Function GlobalSize Lib ″kernel32″ (ByVal hMen As Long) As Long
  Private Declare Function lstrcpy Lib ″kernel32″ Alias ″lstrcpyA″ (ByRef lpString1 As
  Any, ByRef lpString As Any) As Long
  Sub PutExcel(row As Integer, col As Integer)
   Dim ActivesheetName As String
   Dim ClipboardText As String
   ClipboardText = CLIP—TextGet()
   ′MsgBox ClipboardText
   ActivesheetName = ActiveSheet.Name
   Application.Worksheets(ActivesheetName).Cells(row,col).Value=ClipboardText
  End Sub
  Private Function CLIP—TextGet() As String
   Dim lpStr As Long
   Dim hGlobal As Long
   Dim tTempStr As String
   Dim bResult As Boolean
   Dim lResult As Long
   If OpenClipboard(GetFocus()) Then
   If IsClipboardFormatAvailable(CF—TEXT) Then
   hGlobal = GetClipboardData(CF—TEXT)
   If hGlobal <> 0 Then
   lpStr = GlobalLock(hGlobal)
   tTempStr = Space$(GlobalSize(lpStr))
   lResult = lstrcpy(tTempStr, lpStr)
   bResult = GlobalUnlock(hGlobal)
   End If
   If Len(tTempStr) <> 0 Then
   CLIP—TextGet = Left$(tTempStr, InStr(tTempStr, vbNullChar)- 1)
   Else
   CLIP—TextGet = ″ ″
   End If
   End If
   bResult = CloseClipboard()
   End If
  End Function

技术文章快速查找

栏目导航
软件应用
·操作系统 ·杀毒防黑 ·应用软件
·聊天软件 ·网络软件  
Web开发
·ASP ·JavaScript ·CGI
·JSP ·VbScript ·Web服务器
·PHP ·XML  
开发语言
·VB ·VC ·ASP.NET
·Java ·C/C++ ·Delphi
数据库开发
·MySQL ·SQL/Access ·PowerBuilder
·Oracle ·DB2  
网站设计
·Flash ·Dreamweaver ·HTML/CSS
·Fireworks ·FrontPage  
平面设计
·Photoshop ·CorelDraw ·AutoCAD
·FreeHand ·Illustrator ·3DsMAX
媒体动画
·Director ·Authorware ·Maya
·视频处理    


相关软件 产品库推荐
·笔记本 ·台式机 ·服务器
·数码相机 ·手机 ·GPS
·DV摄像机 ·MP3 ·MP4
·CPU ·硬盘 ·内存
·主板 ·显卡 ·显示器
·打印机 ·投影机 ·路由器

还没人留言,抢个先,哈哈!
对"利用剪贴板实现PB与Excel的中文数据传输"的评论 - 快速回贴
内容:
  [完成后可按Ctrl+Enter发布]

百度中 利用剪贴板实现PB与Excel的中文数据传输 相关内容
Google搜索中 利用剪贴板实现PB与Excel的中文数据传输 相关内容
雅虎中 利用剪贴板实现PB与Excel的中文数据传输 相关内容
Sogou搜索中 利用剪贴板实现PB与Excel的中文数据传输 相关内容

相关软件 最新回复帖子:

·AutoCAD打造精致三维鸟笼实例详解
·Photoshop自定义水晶字特效样式
·AutoCAD三维基础实例教程
·PS为黑背景长发美女照片抠图换背
·用Photoshop自制个性摩托车贴花小经验
·轻松几步将美女照片处理为手工素描
·巧用Photoshop画笔轻松绘制创意特效
·用Photoshop通道将模糊肖像照片清晰化
·照片处理:Photoshop修复残破照片
·PS CS2新增形状模糊滤镜绘制花布图案


  相关软件 利用剪贴板实现PB与Excel的中文数据传输相关文章
在PB6.5中利用Win9X的OCX控件美化程序界面 在PB应用中收发电子邮件
关于PB应用程序的2000年问题 PowerBuilder 的 大 文 本 数 据 打 印
在PB 中 巧 用 下 拉 数 据 窗 口 在PB中应用灵活多样的排序
PB修改数据库表结构的技巧二则 深入了解PowerBuilder的数据窗口
PowerBuilder数据窗口中按钮的封装 数据库系统在面向对象分析设计中的应用
经验点滴 如何在POWER BUILDER中使用WINSOCK控件
在PowerBuilder中实现数据库的实时过滤 用Enter键来进行窗口上的各个控键的焦点转跳
PB5中如何实现诸如Ms word之类的启动画面 如何在数据窗口(Datawindow)中用Enter代替Tab在字段间移动
PB问题解答之一 PB问题解答之二
PB问答(-) 在PB中使用FoxPro数据库的方法