这是我Revit二次开发的第一个成功的案例,代码有点拙劣,目的只为记录自己的历程。

[Transaction(TransactionMode.Manual)]
public class Class1 : IExternalCommand
{public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements){//1.UIDocument uiDoc = commandData.Application.ActiveUIDocument;Document doc = uiDoc.Document;ViewSchedule schedule = doc.ActiveView as ViewSchedule;//2、取得table数据TableData tableData = schedule.GetTableData();//BodyTextTypeId//3、分别取得数据//string header = tableData.GetSectionData(SectionType.Header).ToString();取得的为Autodesk.Revit.DB.TableSelctionDatastring header = schedule.GetCellText(SectionType.Header,0,0);//要想取得数据使用schedule.GetCellTexk();//4、得到body数据部分TableSectionData sectionBody = tableData.GetSectionData(SectionType.Body);int rs = sectionBody.NumberOfRows;int cs = sectionBody.NumberOfColumns;//TaskDialog.Show("columns:",cs.ToString());//创建workbookHSSFWorkbook workBook = new HSSFWorkbook();//设置格式ICellStyle cellStyle = workBook.CreateCellStyle();cellStyle.VerticalAlignment = VerticalAlignment.Center;cellStyle.Alignment = HorizontalAlignment.Center;if (workBook == null){message = "workBook is null";return Result.Failed;}//sheet的命名为明细表的表头ISheet sheet = workBook.CreateSheet(header);//添加表头IRow rowH = sheet.CreateRow(0);ICell cellH = rowH.CreateCell(0);cellH.SetCellValue(header);cellH.CellStyle = cellStyle;//合并表头sheet.AddMergedRegion(new CellRangeAddress(0, 0, 0, cs+6));//标题信息CreateTitle(cs, schedule, sheet, cellStyle);for (int r = 3;r < rs+2; r++){IRow row = sheet.CreateRow(r);for (int c = 0;c < cs; c++){ICell cel = row.CreateCell(c);string cellText = schedule.GetCellText(SectionType.Body, r - 2, c);//如何读取Revit明细表中数据格式cel.SetCellValue(cellText);}}using (FileStream fs = File.Create(@"D:\\"+ header + ".xls")){workBook.Write(fs);}return Result.Succeeded;}public void CreateTitle(int cs, ViewSchedule schedule, ISheet sheet, ICellStyle cellStyle){IRow rowTitle = sheet.CreateRow(1);for (int c1 = 0; c1 < cs; c1++){ICell cellLeft = rowTitle.CreateCell(c1);string cellText = schedule.GetCellText(SectionType.Body, 0, c1);cellLeft.SetCellValue(cellText);cellLeft.CellStyle = cellStyle;sheet.AddMergedRegion(new CellRangeAddress(1, 2, c1, c1));}ICell cellSingle = rowTitle.CreateCell(cs);cellSingle.SetCellValue("单价");cellSingle.CellStyle = cellStyle;sheet.AddMergedRegion(new CellRangeAddress(1, 1, cs, cs + 2));ICell cellTotal = rowTitle.CreateCell(cs + 3);sheet.AddMergedRegion(new CellRangeAddress(1, 1, cs + 3, cs + 5));cellTotal.SetCellValue("合价");cellTotal.CellStyle = cellStyle;IRow row2 = sheet.CreateRow(2);ICell cellCs = row2.CreateCell(cs);cellCs.SetCellValue("小计");ICell cellCs1 = row2.CreateCell(cs+1);cellCs1.SetCellValue("主材费");ICell cellCs2 = row2.CreateCell(cs+2);cellCs2.SetCellValue("安装费");ICell cellCs3 = row2.CreateCell(cs + 3);cellCs3.SetCellValue("合计");ICell cellCs4 = row2.CreateCell(cs + 4);cellCs4.SetCellValue("主材费");ICell cellCs5 = row2.CreateCell(cs + 5);cellCs5.SetCellValue("安装费");ICell cellCs6 = rowTitle.CreateCell(cs+6);sheet.AddMergedRegion(new CellRangeAddress(1, 2, cs+6, cs + 6));cellCs6.SetCellValue("备注");cellCs6.CellStyle = cellStyle;}
}

Revit二次开发--明细表导出相关推荐

  1. Revit二次开发——自动生成构件图(总结)

    之前测试导出构件图的功能实现,拆分了各模块分布进行测试: Revit二次开发--一键导出构件图(1) Revit二次开发--叠合板自动配筋(2) Revit二次开发--自动标注钢筋思路(3) 本篇为这 ...

  2. Revit二次开发——不启动Revit,做rvt文件数据导出

    Revit二次开发--不启动Revit,做rvt文件数据导出 Node.js部分 调用C#端供外部调用的dll C#部分 调用RevitNet.dll,做数据导出exe 做外部调用dll 总结 Nod ...

  3. Revit二次开发从入门到精通学习之路, (含Revit二次开发教程下载)

    Revit二次开发从入门到精通学习之路 Autodesk Joe Ye叶雄进 2. 18 2014    yexiongjin@hotmail.com Revit在国内的应用越来越广泛, Revit ...

  4. Revit二次开发 obj与rvt文件互导

    利用Revit二次开发的接口,将revit模型通过mesh的顶点信息可以导出OBJ格式的文件. 那么反过来,是否可以将OBJ文件导入Revit中呢? 结论:可以. 已有成功案例,不过对于具体的贴图,纹 ...

  5. Revit 二次开发实例分享

                                                                 叶雄进 Joe Ye Autodesk 2010/9/1     Autode ...

  6. 关于Revit二次开发的些许事

    关于Revit二次开发的些许事 关于Revit二次开发的些许事 Revit二次开发方向 岗位需求 哪些公司在招聘Revit研发岗位? 招聘的普遍岗位职责是什么? 岗位要求有哪些? 待遇是不是美丽?! ...

  7. Revit二次开发 - C#程序员的佳好选择

    虽然Revit的使用者和开发目前在中国都很少,但是这是个趋势. 未来Revit会在许多方面取代Autocad 做CAD二次开发的,在中国也很吃香. 但是使用C++难倒了许多人. 而Revit二次开发可 ...

  8. Revit二次开发_1.过滤器笔记篇

    Revit二次开发_1.过滤器笔记篇 前言 对象分类 过滤方法 前言 最近在用过滤器功能,先按照教程做了筛选墙,再自己做了筛选常规模型的功能,发现有点不一样,问题在于筛选这些Elements的时候没弄 ...

  9. revit二次开发之教学视频

    一.背景 刚入门revit二次开发的小伙伴,很多是零基础的工程人员,为了解决这个问题,博主做了revit二次开发的一系列教学视频(包括C#基础与revit二次开发两个模块),来帮助大家更好的入门. 二 ...

最新文章

  1. php-fpm – 配置详解
  2. Yii中创建自己的Widget
  3. idea创建maven的web项目
  4. 清华计算机系媒体所,清华大学计算机系媒体所《时光机》新年联欢会小结
  5. Arduino--蓝牙
  6. python使用redis在实际场景使用_Python使用Redis实现作业调度系统(超简单)
  7. linux命令文件加密软件,Linux系统下如何加密文件,简单实用的文件管理器GnuPG
  8. js 自己试验 创建对象例子
  9. web mysql数据库的持久连接_JavaWeb连接数据库MySQL的操作技巧
  10. lisp坐标一键生成_Grasshopper自动生成坡度标注
  11. XMLReader—一个可以读取XML文件的java类
  12. MySQL:日期函数、时间函数总结(MySQL 5.X)
  13. 从零开始实现Adam优化算法
  14. Git储藏和引用日志
  15. 三线压力传感器原理_常见压力传感器原理及其接头
  16. [人工智能-深度学习-58]:生成对抗网络GAN - 概述与常见应用
  17. win7摄像头软件_电脑最好用录屏软件,一分钟下载安装
  18. LFLT1000 流量计密封性自动化测试系统
  19. 代数拓扑1|单纯同调
  20. 地图省界线什么样_地图上省份的划分精细复杂,为何分得这么细致?原来有这么多学问...

热门文章

  1. java基础学习_IO流03_字符流、IO流小结、案例_day21总结
  2. Python卸载教程(Windows10)
  3. ubuntu卸载python
  4. James邮件服务器搭建
  5. 【合集】支付宝春节红包背后的那些事——集五福,咻红包
  6. 华东师范学院大学计算机考研,华东师范大学-825-2018-计算机考研-真题.pdf
  7. redis设置密码,启动redis
  8. 51CTO技术沙龙之:窥斑见豹 全方位解析虚拟化(视频、图文、PPT)
  9. Android Launcher界面未接来电和未读短信条数的显示
  10. “个性化视频推荐”算法的Storm实现方案