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#关闭指定时间段的Excel进程的方法

private DateTime beforeTime;            //Excel启动之前时间          private DateTime afterTime;               //Excel启动之后时间          //举例          beforeTime = DateTime.Now;          Excel.Applicat

excel翻译软件有哪些?如何高效提翻译?

你是否曾在面对满屏的英文Excel表格时感到头疼?项目报告、数据分析、财务报表... 当这些重要的信息被语言壁垒阻挡时,效率和理解度都会大打折扣。别担心,只需3分钟,我将带你轻松解锁excel翻译成中文的秘籍。 无论是职场新人还是老手,这一技巧都将是你的得力助手,让你在信息的海洋中畅游无阻。 方法一:使用同声传译王软件 同声传译王是一款专业的翻译软件,它支持多种语言翻译,可以excel

终于解决了excel操作及cspreadsheet.h问题

困扰多日的excel操作问题终于解决:利用cspreadsheet.h!在vs2005下,不能直接应用cspreadsheet.h,所以必须解决些问题先。 首先, 出现暴多错误。解决UNICODE问题,全部添加L。 [1] +++++++++++++++++++ 其次, 出现问题: error   C2664:   'SQLGetInstalledDriversW '

关于使用cspreadsheet读写EXCEL表格数据的问题

前几天项目有读写EXCEL表格的需求,我就找了大概有几种,大致分为:COM方法、ODBC方法、OLE方法、纯底层格式分析方法。由于COM方法要求必须安装有OFFICE的EXCEL组件,纯底层格式分析方法又很多功能需要自行去完善,所有最终选择了数据库的方法,用数据库的方法去存取xls格式的数据。网上有一个高手写的CSpreedSheet,看了一下提供的接口,感觉挺好用的。在使用的过程中发现几个

Excel和Word日常使用记录:

Excel使用总结 表格颜色填充: 合并单元格: 选中你要合并的单元格区域。按下快捷键 Alt + H,然后松开这些键。再按下 M,接着按 C。这个组合键执行的操作是:Alt + H:打开“主页”选项卡。M:选择“合并单元格”选项。C:执行“合并并居中”操作。 插入行: 在Excel中,插入一行的快捷键是:Windows:选择整行(可以点击行号)。按下 Ctrl + Sh

SpringBoot中利用EasyExcel+aop实现一个通用Excel导出功能

一、结果展示 主要功能:可以根据前端传递的参数,导出指定列、指定行 1.1 案例一 前端页面 传递参数 {"excelName": "导出用户信息1725738666946","sheetName": "导出用户信息","fieldList": [{"fieldName": "userId","fieldDesc": "用户id"},{"fieldName": "age","fieldDe

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

如何在Excel中根据单元格内容作MSnbsp;…

上篇文章,我们介绍了INDEX+SMALL+IF+ROW的数组公式组合,也就是说只要在IF中通过条件的构造,基本上就可以想提取什么条件的数据都可以,数据查询肯定得心应手。 但是,我们一起强调函数公式不是万能的,尤其是数组公式在海量数据面前,既是软肋也是硬伤,而且构造这个函数组合还需要你要具备或者能理解简单数组公式逻辑,对于在函数公式方面没有深究的人,自然是一头雾水。当然,就像“数据透视表”一样,

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享,不用做任何商业用途 本文包括但不限于unity官方手册,unity唐老狮等教程知识,如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客  这节就是真正的存储数据了   理清一下思路: 1.存储路径并检查 //2进制文件类存储private static string Data_Binary_Pa

Weibull概率分布纸(EXCEL VBA实现)

在学习Weibull分布理论的时候,希望有一张Weibull概率纸,用来学习图解法。但是在度娘上没有找到的Weibull概率纸的电子版。在书上看到的Weibull概率纸,只能复印下来使用。于是萌生了自己制作Weibull概率纸的想法,帮助自己更好地学习。 本人擅长使用各种计算机语言,C,C++,Matlab,Scilab等等,但是始终钟爱与VBA,认为VBA可以实现一切你想要的东西,由于在企业里不