power designer 导出excel

本文介绍了一种将物理数据模型(PDM)中的表格和列导出到Excel的方法,通过VBA脚本实现,详细展示了如何创建Excel应用程序,添加工作表,设置列宽,自动换行以及如何遍历模型中的所有表格和列,将其属性写入Excel中。
'******************************************************************************

'* File:     pdm2excel.txt

'* Title:    pdm export to excel

'* Purpose:  To export the tables and columns to Excel

'* Model:    Physical Data Model 16.5 , Microsoft Office 2007

'* Objects:  Table, Column, View

'******************************************************************************

Option Explicit
const xlSolid = 1
Const xlAutomatic = -4105
Const xlThemeColorAccent2 = 6
   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

 set EXCEL = CREATEOBJECT("Excel.Application")

 EXCEL.workbooks.add(-4167)'添加工作表

 EXCEL.workbooks(1).sheets(1).name ="test"

 set sheet = EXCEL.workbooks(1).sheets("test")



 ShowProperties Model, SHEET

 EXCEL.visible = true

 '设置列宽和自动换行

 sheet.Columns(1).ColumnWidth = 20 

 sheet.Columns(2).ColumnWidth = 40 
 sheet.Columns(3).ColumnWidth = 20 

 sheet.Columns(4).ColumnWidth = 20 

 sheet.Columns(5).ColumnWidth = 20 

 sheet.Columns(6).ColumnWidth = 15 

 sheet.Columns(1).WrapText =true

 sheet.Columns(2).WrapText =true

 sheet.Columns(4).WrapText =true

 End If

'-----------------------------------------------------------------------------

' Show properties of tables

'-----------------------------------------------------------------------------

Sub ShowProperties(mdl, sheet)

   ' Show tables of the current model/package

   rowsNum=0

   beginrow = rowsNum+1

   ' For each table

   output "begin"

   Dim tab

   For Each tab In mdl.tables

      ShowTable tab,sheet

   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)

   If IsObject(tab) Then

     Dim rangFlag

     rowsNum = rowsNum + 1

      ' Show properties

      Output "================================"

      sheet.cells(rowsNum, 1) = "实体名"

      sheet.cells(rowsNum, 2) =tab.comment

  

      sheet.cells(rowsNum, 3) = tab.code

  

      rowsNum = rowsNum + 1

      sheet.cells(rowsNum, 1) = "属性名"

      sheet.cells(rowsNum, 2) = "说明"



      sheet.cells(rowsNum, 3) = "字段类型"
      sheet.cells(rowsNum, 4) = "主键"

      '设置边框
      with sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 4))
         .Borders.LineStyle = "1"
         .Font.Bold = True
      end with
  
      with sheet.Range(sheet.cells(rowsNum-1, 1),sheet.cells(rowsNum, 4)).Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorAccent2
        .TintAndShade = 0.399975585192419
        .PatternTintAndShade = 0
      end with

    

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, 2) = col.comment


      sheet.cells(rowsNum, 3) = col.datatype
      if col.primary then
         sheet.cells(rowsNum, 4) = "■"
      end if
         


      next

      sheet.Range(sheet.cells(rowsNum-colsNum+1,1),sheet.cells(rowsNum,4)).Borders.LineStyle = "2"       

 

      rowsNum = rowsNum + 1



      Output "FullDescription: "       + tab.Name

   End If

End Sub

生成结果EXCEL:excel

 

### 绘制图书管理系统的用例图 在 PowerDesigner 中绘制图书管理系统的用例图需要遵循一定的步骤和原则。PowerDesigner 提供了内置的图形编辑器,可以方便地创建和修改图表,并支持将最终成果导出为常用办公文档格式(如 Excel、PDF 等)[^1]。 以下是绘制图书管理系统用例图的具体方法: #### 1. 创建新的模型 打开 PowerDesigner 软件后,在主界面选择“新建”或“打开”工程。如果需要从头开始绘制,可以选择新建一个模型。在新建模型时,选择“Use Case Model”作为模型类型。 #### 2. 添加用例元素 在用例图中,主要包含以下几种元素: - **参与者(Actor)**:表示与系统交互的外部实体。例如,管理员、读者等。 - **用例(Use Case)**:表示系统提供的功能。例如,添加管理员、删除管理员、查询书籍等。 - **关联关系(Association)**:表示参与者与用例之间的交互关系。 通过工具栏中的图标或快捷菜单,可以在画布上添加这些元素。例如,双击图标进行命名,并确保每个元素都有清晰的描述[^2]。 #### 3. 定义图书管理系统的功能 根据引用内容,图书管理系统的主要功能包括管理员对系统进行管理维护,具体涉及以下操作: - 添加管理员 - 删除管理员 - 修改管理员信息 - 查询管理员信息 此外,每位管理员必须属于一个馆室且只能属于一个馆室,而每个馆室至少需要一位管理员进行管理[^3]。 #### 4. 连接参与者与用例 使用箭头或连线将参与者(如管理员)与对应的用例(如添加管理员、删除管理员等)连接起来。确保每条连线都具有明确的意义,并可以通过右键菜单设置连线的显示属性,例如名称、字体格式、颜色等[^2]。 #### 5. 格式化图表 完成基本的用例图绘制后,可以进一步调整图表的格式以提高可读性。例如: - 设置字体大小和颜色 - 调整元素的位置和间距 - 添加注释或说明文字 #### 6. 导出图表 绘制完成后,可以将用例图导出为常用的办公文档格式(如 PDF 或 Excel),以便于分享和展示。 ```python # 示例代码:虽然 PowerDesigner 是图形化工具,但可以用 Python 模拟生成简单的用例图数据结构 class UseCaseDiagram: def __init__(self): self.actors = [] self.use_cases = [] self.relationships = [] def add_actor(self, name): self.actors.append(name) def add_use_case(self, name): self.use_cases.append(name) def add_relationship(self, actor, use_case): self.relationships.append((actor, use_case)) # 创建用例图对象 diagram = UseCaseDiagram() # 添加参与者 diagram.add_actor("管理员") diagram.add_actor("读者") # 添加用例 diagram.add_use_case("添加管理员") diagram.add_use_case("删除管理员") diagram.add_use_case("查询书籍") # 建立关联关系 diagram.add_relationship("管理员", "添加管理员") diagram.add_relationship("管理员", "删除管理员") diagram.add_relationship("读者", "查询书籍") ``` ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值