pdm转excel-超级豪华版

2024-06-08 21:18
文章标签 excel 超级 pdm 豪华版

本文主要是介绍pdm转excel-超级豪华版,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

PDM转Excel

  • 使用了VBS+Powder Designer实现
  • 基本功能如下:
  1. 支持每个表一个sheet页
  2. 支持目录索引
  3. 支持每个sheet页返回目录
  4. 支持索引
  5. 支持主键

增强版见:https://blog.csdn.net/u011461385/article/details/88815235

  • 步骤如下:
  1. PD中使用Ctrl+Shift+X获取脚本执行窗口
  2. 拷贝以下代码置窗口中
    
    Option ExplicitDim mdl 
    Set mdl = ActiveModel
    If (mdl Is Nothing) ThenMsgBox "There is no Active Model"
    End If
    Dim EXCEL, SheetList
    Set EXCEL = CreateObject("Excel.Application") 
    EXCEL.Visible = True 
    EXCEL.Workbooks.AddDim tab 
    Dim sheet  
    For Each tab In mdl.tablesEXCEL.workbooks(1).sheets.addEXCEL.workbooks(1).sheets(1).name = tab.codeset sheet = EXCEL.workbooks(1).sheets(tab.code)EXCEL.visible = truesheet.Columns(1).ColumnWidth = 25sheet.Columns(2).ColumnWidth = 20sheet.Columns(3).ColumnWidth = 15sheet.Columns(4).ColumnWidth = 7sheet.Columns(5).ColumnWidth = 7sheet.Columns(6).ColumnWidth = 10sheet.Columns(7).ColumnWidth = 60sheet.Columns(1).WrapText =truesheet.Columns(2).WrapText =truesheet.Columns(4).WrapText =trueEXCEL.ActiveWindow.DisplayGridlines = FalseNextEXCEL.workbooks(1).sheets.addEXCEL.workbooks(1).sheets(1).name ="目录"set SheetList = EXCEL.workbooks(1).sheets("目录")ShowTableList mdl, SheetListCreateTab mdl, SheetListSub CreateTab(mdl, SheetList)Dim rowsNum, tablecode, tablnamerowsNum = 0For Each tab In mdl.tablesrowsNum = 1set SHEET = EXCEL.workbooks(1).sheets(tab.code)sheet.cells(rowsNum, 1) = "表中文名"tablecode = tab.codetablname = tab.nametablname = replace(tablname, tablecode, "")sheet.cells(rowsNum, 2) = tablnamesheet.cells(rowsNum, 3) = "表英文名"sheet.cells(rowsNum, 4) = tab.codesheet.Range(sheet.cells(rowsNum, 4),sheet.cells(rowsNum, 6)).Mergesheet.cells(rowsNum, 7) = "返回目录"sheet.Hyperlinks.Add sheet.cells(rowsNum,7), "","目录"&"!B"&rowsNumrowsNum = rowsNum + 1sheet.cells(rowsNum, 1) = "表中文说明"sheet.cells(rowsNum, 2) = tab.namesheet.Range(sheet.cells(rowsNum, 2),sheet.cells(rowsNum, 7)).MergerowsNum = rowsNum + 1sheet.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) = "字段说明"addTabsCol sheet, tab, rowsNumaddTabsidx sheet, tab, rowsNumaddTabPK sheet, tab, rowsNumsheet.Range(sheet.cells(1, 1),sheet.cells(rowsNum, 7)).Borders.LineStyle = "1"sheet.Range(sheet.cells(1, 1),sheet.cells(rowsNum, 7)).Font.Size=10sheet.Range(sheet.cells(1, 1),sheet.cells(rowsNum, 7)).Font.Name="微软雅黑"sheet.Range(sheet.cells(1, 1),sheet.cells(3, 7)).Interior.colorindex = "3"sheet.Range(sheet.cells(1, 1),sheet.cells(rowsNum, 7)).RowHeight = "21"sheet.Range(sheet.cells(1, 1),sheet.cells(3, 7)).Font.Bold = Truesheet.Range(sheet.cells(3, 7),sheet.cells(rowsNum, 7)) = " "NextEnd SubSub addTabsCol(sheet, tab, rowsNum)Dim col Dim colsNumcolsNum = 0for each col in tab.columnsrowsNum = rowsNum + 1colsNum = colsNum + 1sheet.cells(rowsNum, 1) = col.codesheet.cells(rowsNum, 2) = col.namesheet.cells(rowsNum, 3) = col.datatypeIf col.Mandatory = true Thensheet.cells(rowsNum, 4) = "非空" Elsesheet.cells(rowsNum, 4) = " " End Ifsheet.cells(rowsNum, 5) = col.DefaultValuesheet.cells(rowsNum, 7) =  col.commentNext 
    End Sub    Sub addTabsidx(sheet, tab, rowsNum)rowsNum = rowsNum + 1sheet.cells(rowsNum, 1) = "索引名"sheet.cells(rowsNum, 2) = "索引类型"sheet.cells(rowsNum, 3) = "索引列表"sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Mergesheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 7)).Font.Bold = TrueDim index Dim idxNmDim indexstrlst  idxNm = 0for each index in tab.indexesrowsNum = rowsNum + 1idxNm = idxNm + 1sheet.cells(rowsNum, 1) = index.codeif index.unique = "1" Thensheet.cells(rowsNum, 2) = "UNIQUE"Elsesheet.cells(rowsNum, 2) = "NORM"End IfDim keystrDim indexcolkeystr = ""for each indexcol in index.IndexColumnskeystr = keystr +","+ indexcol.codenextkeystr = mid(keystr, 2, len(keystr))sheet.cells(rowsNum, 3) = keystrsheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Mergenext
    End Sub Sub addTabPK(sheet, tab, rowsNum)Dim keyDim keyNmDim keystrDim flagDim keycodeDim keycolrowsNum = rowsNum + 1sheet.cells(rowsNum, 1) = "主键"sheet.cells(rowsNum, 2) = "索引类型"sheet.cells(rowsNum, 3) = "主键列表"sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Mergesheet.Range(sheet.cells(rowsNum, 1),sheet.cells(rowsNum, 7)).Font.Bold = True for each key in tab.keyskeycode = key.codeif key.Primary = true Thenflag = 1keystr = ""for each keycol in key.columnskeystr = keystr +","+ keycol.codenextkeystr = mid(keystr, 2, len(keystr))End Ifnextif flag = 1 ThenrowsNum = rowsNum + 1keyNm = 1'sheet.cells(rowsNum, 1) = keycodesheet.cells(rowsNum, 1) = "PK_"+tab.codesheet.cells(rowsNum, 2) = "UNIQUE"sheet.Range(sheet.cells(rowsNum, 3),sheet.cells(rowsNum, 7)).Mergesheet.cells(rowsNum, 3) = keystrEnd If
    End Sub Sub ShowTableList(mdl, SheetList)Dim rowsNumrowsNum=1SheetList.cells(rowsNum, 1) = "主题"SheetList.cells(rowsNum, 2) = "表中文名"SheetList.cells(rowsNum, 3) = "表英文名"SheetList.cells(rowsNum, 4) = "表说明"SheetList.Columns(1).ColumnWidth = 20 SheetList.Columns(2).ColumnWidth = 30 SheetList.Columns(3).ColumnWidth = 35 SheetList.Columns(4).ColumnWidth = 70 rowsNum = rowsNum + 1SheetList.cells(rowsNum, 1) = mdl.nameDim tabFor Each tab In mdl.tablesIf IsObject(tab) ThenrowsNum = rowsNum + 1SheetList.cells(rowsNum, 1) = ""SheetList.cells(rowsNum, 2) = replace(tab.name, tab.code, "")SheetList.cells(rowsNum, 3) = tab.codeSheetList.cells(rowsNum, 4) = tab.commentsheetList.Hyperlinks.Add sheetList.cells(rowsNum,3), "",tab.code&"!B1"sheetList.Hyperlinks.Add sheetList.cells(rowsNum,2), "",tab.code&"!B1"End IfNextSheetList.Range(SheetList.cells(1, 1),SheetList.cells(rowsNum, 4)).Borders.LineStyle = "1"SheetList.Range(SheetList.cells(1, 1),SheetList.cells(rowsNum, 4)).Font.Size=10SheetList.Range(SheetList.cells(1, 1),SheetList.cells(rowsNum, 4)).Font.Name="微软雅黑"SheetList.Range(SheetList.cells(1, 1),SheetList.cells(1, 4)).Interior.colorindex = "3"SheetList.Range(SheetList.cells(1, 1),SheetList.cells(rowsNum, 4)).RowHeight = "20"SheetList.Range(SheetList.cells(1, 1),SheetList.cells(1, 4)).Font.Bold = TrueSheetList.Range(SheetList.cells(2, 1),SheetList.cells(rowsNum, 3)).Font.Bold = TrueSheetList.Range(SheetList.cells(1, 5),SheetList.cells(rowsNum, 5)) = " "EXCEL.ActiveWindow.DisplayGridlines = FalseEnd Sub
    

     

  3. 点击run
  4. 喝杯咖啡等待结果
  5. 效果如下
  • 目录效果
  • 表效果:
  • 备注:
  1. 暂未支持PD中package,不过也可以手工处理下pdm文件,具体可私聊
  2. 颜色搭配来源于一个没办法盘的客户(扶额)
  3. 颜色懒的改脚本的人就就就手工改一下吧
  4. 为啥没写注释?懒+VBS有现成的用就成了,学了也没用

这篇关于pdm转excel-超级豪华版的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043335

相关文章

C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式

《C#实现将Office文档(Word/Excel/PDF/PPT)转为Markdown格式》Markdown凭借简洁的语法、优良的可读性,以及对版本控制系统的高度兼容性,逐渐成为最受欢迎的文档格式... 目录为什么要将文档转换为 Markdown 格式使用工具将 Word 文档转换为 Markdown(.

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

Python实现pdf电子发票信息提取到excel表格

《Python实现pdf电子发票信息提取到excel表格》这篇文章主要为大家详细介绍了如何使用Python实现pdf电子发票信息提取并保存到excel表格,文中的示例代码讲解详细,感兴趣的小伙伴可以跟... 目录应用场景详细代码步骤总结优化应用场景电子发票信息提取系统主要应用于以下场景:企业财务部门:需

Python处理大量Excel文件的十个技巧分享

《Python处理大量Excel文件的十个技巧分享》每天被大量Excel文件折磨的你看过来!这是一份Python程序员整理的实用技巧,不说废话,直接上干货,文章通过代码示例讲解的非常详细,需要的朋友可... 目录一、批量读取多个Excel文件二、选择性读取工作表和列三、自动调整格式和样式四、智能数据清洗五、

Python Pandas高效处理Excel数据完整指南

《PythonPandas高效处理Excel数据完整指南》在数据驱动的时代,Excel仍是大量企业存储核心数据的工具,Python的Pandas库凭借其向量化计算、内存优化和丰富的数据处理接口,成为... 目录一、环境搭建与数据读取1.1 基础环境配置1.2 数据高效载入技巧二、数据清洗核心战术2.1 缺失

利用Python实现Excel文件智能合并工具

《利用Python实现Excel文件智能合并工具》有时候,我们需要将多个Excel文件按照特定顺序合并成一个文件,这样可以更方便地进行后续的数据处理和分析,下面我们看看如何使用Python实现Exce... 目录运行结果为什么需要这个工具技术实现工具的核心功能代码解析使用示例工具优化与扩展有时候,我们需要将

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

C#实现高性能Excel百万数据导出优化实战指南

《C#实现高性能Excel百万数据导出优化实战指南》在日常工作中,Excel数据导出是一个常见的需求,然而,当数据量较大时,性能和内存问题往往会成为限制导出效率的瓶颈,下面我们看看C#如何结合EPPl... 目录一、技术方案核心对比二、各方案选型建议三、性能对比数据四、核心代码实现1. MiniExcel

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格