powerDesigner 导出excel

1、配置数据源

 

2、打开powedesigner ,创建Model

一、powerdesigner 连接 数据库, Database -> connect ->

二、更新数据库表结构到powerdesigner,Database -> update Model from Datebase ,选择需要导出的表

三、执行vb脚本导出为excel , Tools ->Execute Commands ->Edit/Run Script

附VB导出脚本:

'******************************************************************************
Option Explicit
   Dim rowsNum
   rowsNum = 0
'-----------------------------------------------------------------------------
' Main function
'-----------------------------------------------------------------------------
' Get the current active model
    Dim Model
    Set Model = ActiveModel
    If (Model Is Nothing) Or (Not Model.IsKindOf(PdPDM.cls_Model)) Then
       MsgBox "The current model is not an PDM model."
    Else
      ' Get the tables collection
      '创建EXCEL APP
      dim beginrow
      DIM EXCEL, SHEET, SHEETLIST
      set EXCEL = CREATEOBJECT("Excel.Application")
      EXCEL.workbooks.add(-4167)'添加工作表
      EXCEL.workbooks(1).sheets(1).name ="表结构"
      set SHEET = EXCEL.workbooks(1).sheets("表结构")
      
      EXCEL.workbooks(1).sheets.add
      EXCEL.workbooks(1).sheets(1).name ="目录"
      set SHEETLIST = EXCEL.workbooks(1).sheets("目录")
      ShowTableList Model,SHEETLIST

      ShowProperties Model, SHEET,SHEETLIST
      
      
      EXCEL.workbooks(1).Sheets(2).Select
      EXCEL.visible = true
      '设置列宽和自动换行
      sheet.Columns(1).ColumnWidth = 20 
      sheet.Columns(2).ColumnWidth = 20 
      sheet.Columns(3).ColumnWidth = 20 
      sheet.Columns(4).ColumnWidth = 40 
      sheet.Columns(5).ColumnWidth = 10 
      sheet.Columns(6).ColumnWidth = 10 
      sheet.Columns(1).WrapText =true
      sheet.Columns(2).WrapText =true
      sheet.Columns(4).WrapText =true
      '不显示网格线
      EXCEL.ActiveWindow.DisplayGridlines = False
      
      
 End If
'-----------------------------------------------------------------------------
' Show properties of tables
'-----------------------------------------------------------------------------
Sub ShowProperties(mdl, sheet,SheetList)
   ' Show tables of the current model/package
   rowsNum=0
   beginrow = rowsNum+1
   Dim rowIndex 
   rowIndex=3
   ' For each table
   output "begin"
   Dim tab
   For Each tab In mdl.tables
      ShowTable tab,sheet,rowIndex,sheetList
      rowIndex = rowIndex +1
   Next
   if mdl.tables.count > 0 then
        sheet.Range("A" & beginrow + 1 & ":A" & rowsNum).Rows.Group
   end if
   output "end"
End Sub
'-----------------------------------------------------------------------------
' Show table properties
'-----------------------------------------------------------------------------
Sub ShowTable(tab, sheet,rowIndex,sheetList)
   If IsObject(tab) Then
     Dim rangFlag
     rowsNum = rowsNum + 1
      ' Show properties
      Output "================================"
      sheet.cells(rowsNum, 1) =tab.name
      sheet.cells(rowsNum, 1).HorizontalAlignment=3
      sheet.cells(rowsNum, 2) = tab.code
      'sheet.cells(rowsNum, 5).HorizontalAlignment=3
      'sheet.cells(rowsNum, 6) = ""
      'sheet.cells(rowsNum, 7) = "表说明"
      sheet.cells(rowsNum, 3) = tab.comment
      'sheet.cells(rowsNum, 8).HorizontalAlignment=3
      sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Merge
      '设置超链接,从目录点击表名去查看表结构
      '字段中文名    字段英文名    字段类型    注释    是否主键    是否非空    默认值
      sheetList.Hyperlinks.Add sheetList.cells(rowIndex,2), "","表结构"&"!B"&rowsNum
      rowsNum = rowsNum + 1
      sheet.cells(rowsNum, 1) = "字段中文名"
      sheet.cells(rowsNum, 2) = "字段英文名"
      sheet.cells(rowsNum, 3) = "字段类型"
      sheet.cells(rowsNum, 4) = "注释"
      sheet.cells(rowsNum, 5) = "是否主键"
      sheet.cells(rowsNum, 6) = "是否非空"
      sheet.cells(rowsNum, 7) = "默认值"
      '设置边框
      sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"
      'sheet.Range(sheet.cells(rowsNum-1, 4),sheet.cells(rowsNum, 9)).Borders.LineStyle = "1"
      '字体为10号
      sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 7)).Font.Size=10
            Dim col ' running column
            Dim colsNum
            colsNum = 0
      for each col in tab.columns
        rowsNum = rowsNum + 1
        colsNum = colsNum + 1
          sheet.cells(rowsNum, 1) = col.name
        'sheet.cells(rowsNum, 3) = ""
          'sheet.cells(rowsNum, 4) = col.name
          sheet.cells(rowsNum, 2) = col.code
          sheet.cells(rowsNum, 3) = col.datatype
        sheet.cells(rowsNum, 4) = col.comment
          If col.Primary = true Then
        sheet.cells(rowsNum, 5) = "Y" 
        Else
        sheet.cells(rowsNum, 5) = " " 
        End If
        If col.Mandatory = true Then
        sheet.cells(rowsNum, 6) = "Y" 
        Else
        sheet.cells(rowsNum, 6) = " " 
        End If
        sheet.cells(rowsNum, 7) =  col.defaultvalue
      next
      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Borders.LineStyle = "3"       
      'sheet.Range(sheet.cells(rowsNum-colsNum+1,4),sheet.cells(rowsNum,9)).Borders.LineStyle = "3"
      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,7)).Font.Size = 10
      rowsNum = rowsNum + 2
      
      Output "FullDescription: "       + tab.Name
   End If
   
End Sub
'-----------------------------------------------------------------------------
' Show List Of Table
'-----------------------------------------------------------------------------
Sub ShowTableList(mdl, SheetList)
   ' Show tables of the current model/package
   Dim rowsNo
   rowsNo=1
   ' For each table
   output "begin"
   SheetList.cells(rowsNo, 1) = "主题"
   SheetList.cells(rowsNo, 2) = "表中文名"
   SheetList.cells(rowsNo, 3) = "表英文名"
   SheetList.cells(rowsNo, 4) = "表说明"
   rowsNo = rowsNo + 1
   SheetList.cells(rowsNo, 1) = mdl.name
   Dim tab
   For Each tab In mdl.tables
     If IsObject(tab) Then
         rowsNo = rowsNo + 1
      SheetList.cells(rowsNo, 1) = ""
      SheetList.cells(rowsNo, 2) = tab.name
      SheetList.cells(rowsNo, 3) = tab.code
      SheetList.cells(rowsNo, 4) = tab.comment
     End If
   Next
    SheetList.Columns(1).ColumnWidth = 20 
      SheetList.Columns(2).ColumnWidth = 20 
      SheetList.Columns(3).ColumnWidth = 30 
     SheetList.Columns(4).ColumnWidth = 60 
   output "end"
End Sub

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将PowerDesigner中的数据导出Excel中,可以按照以下步骤操作: 1. 打开PowerDesigner软件,选择需要导出的模型或者图表。 2. 在菜单栏中选择“文件”-“导出”-“Excel文件”。 3. 在弹出的“导出Excel文件”对话框中,选择需要导出的对象类型和属性,设置导出选项,然后点击“确定”按钮。 4. 在弹出的“保存Excel文件”对话框中,选择保存路径和文件名,然后点击“保存”按钮。 5. 等待导出完成后,就可以在指定的保存路径中找到导出Excel文件了。 需要注意的是,PowerDesigner导出Excel文件可能需要进行一些格式调整和数据清理,以便更好地满足实际需求。 ### 回答2: PowerDesigner 是一款数据建模和管理软件,经常用于数据架构设计和数据库管理。 通过 PowerDesigner,可以方便地对任何组织内的业务和业务流程进行建模,以及对应的数据库进行管理。 PowerDesigner 导出数据模型功能也是非常重要的,其中最常用的导出格式便是 Excel。 首先,在 PowerDesigner 中打开需要导出的数据模型。 其次,点击“文件”→“Excel 模板”→“定义”。 然后,选择 Excel 文件类型及文件名,并在 内容选择“数据模型”。 在“数据模型”选项卡中,可以选择需要导出的对象类型,例如,表、列、键、索引等等。如果需要导出的对象比较多,可以通过勾选“逐步筛选”来逐步细化筛选条件,以便更精确地导出目标对象。 接下来,可以选择需要导出的属性,例如,表名称、列名称、数据类型等等,并按需对导出字段进行排序,也可以在此处设置筛选条件。 最后,单击“确定”按钮,即可将数据模型导出 Excel 文件,可以通过 Microsoft Excel 打开并查看导出结果。如果需要再次导出数据模型,只需要重复以上步骤,并在弹出的导出对话框中选择正确的选项即可。 总体来讲,PowerDesigner 导出 Excel 功能非常强大和灵活,用户可以根据实际需要,在导出前先进行设置并进行一些适当的筛选条件,以确保导出结果的准确性和完整性。此外,导出后的数据模型也可以在 Excel 中进行编辑和调整,以适应不同的需求和应用场景。 ### 回答3: PowerDesigner是一套非常实用的数据建模和分析软件,可以帮助用户快速高效地设计和管理数据库、数据仓库、业务流程等等。而PowerDesigner所支持的导出格式中,Excel可以说是最为常见和大众化的一种。下面,我将为大家介绍如何通过PowerDesigner导出Excel文件,并为大家解决在实际操作中遇到的问题。 首先,在PowerDesigner中选择需要导出的模型,然后在上方工具栏找到“文件”菜单,点击“导出”选项。接着,选择“Microsoft Excel (*.xls)”或“Microsoft Excel 2007/2010/2013(*.xlsx)”格式,然后设置相关参数如导出选项、输出路径、输出内容等等。最后,点击“确定”即可开始导出过程。 在实际操作过程中,用户可能会遇到一些问题,如: 1. Excel文件打开速度慢:这是因为导出Excel文件体积可能较大,可以考虑把表格拆分成多个sheet或分批导出; 2. 导出Excel数据格式不符合要求:用户可以在导出设置中选择“自定义模板”,进一步对导出格式和样式进行设置和维护; 3. PowerDesigner导出Excel文件中文乱码:这是因为导出Excel默认编码格式与中文字符集不匹配,用户可以在导出设置中选择UTF-8编码格式,解决乱码问题。 通过上述操作,PowerDesigner导出Excel就可以轻松搞定。总的来说,PowerDesigner作为一款非常优秀的架构设计工具,具有操作简便、功能强大、UI友好等众多优点,无论是在建模、分析、协作等方面都能给用户提供高效便捷的帮助。对于那些经常需要进行大量数据处理和分析的用户,更是不可或缺的好帮手。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值