最近紧急开发一个操作Excel文档软件,经过大约5天左右不懈努力,终于完成。

先上2张图看看界面:

这是为从一串字符中提取地址而紧急设计,边使用边开发,软件虽小而且简单,可是并非开始构思的那样简单想法:只要提取需要字符出来填到对应单元格内就可以导入数据库了,而是,随着基本功能的实现,发现可以让程序做更多的工作,从而扩展的功能也随之开发,而且是越开发越多,最后,菜单竟然有十几项。

使用控件不多:2个DataGridView,一个Treeview,2个splitContainer构成主界面元素。

其中树和显示数据代码都是使用发布过的直接应用,所以,可以快速完成开发工作。

设计完成之余,随手玩玩手动添加树节点和多维数组,组成一个自定义表,该表用于生成一颗树,如上2图所示,先发代码如下:

/**/
地址分类树.Nodes.Add("极乐世界");
地址分类树.Nodes[0].Nodes.Add("佛");
地址分类树.Nodes[0].Nodes[0].Nodes.Add("阿弥陀");
地址分类树.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("菩萨");
地址分类树.Nodes[0].Nodes[0].Nodes[0].Nodes.Add("圣众");
地址分类树.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("观世音");
地址分类树.Nodes[0].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("大势至");
地址分类树.Nodes[0].Nodes[0].Nodes[0].Nodes[1].Nodes.Add("无量");
地址分类树.Nodes.Add("娑婆世界");
地址分类树.Nodes[1].Nodes.Add("劫名");
地址分类树.Nodes[1].Nodes[0].Nodes.Add("庄严");
地址分类树.Nodes[1].Nodes[0].Nodes.Add("贤");
地址分类树.Nodes[1].Nodes[0].Nodes[0].Nodes.Add("佛");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes.Add("佛");
地址分类树.Nodes[1].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("毗婆尸");
地址分类树.Nodes[1].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("尸弃");
地址分类树.Nodes[1].Nodes[0].Nodes[0].Nodes[0].Nodes.Add("毗舍浮");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes.Add("拘留孙");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes.Add("拘那含牟尼");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes.Add("迦叶");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes.Add("释迦牟尼");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes.Add("菩萨");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes.Add("祖师");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("观世音");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("大势至");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("文殊");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("普贤");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("地藏");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[0].Nodes.Add("弥勒");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("摩诃迦叶");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("阿难");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("商那和修");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("优波毱多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("提多迦");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("弥遮迦");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("婆须蜜多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("佛驮难提");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("伏驮蜜多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("脇");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("富那夜奢");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("马呜");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("迦毗摩罗");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("龙树");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("迦那提婆");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("罗睺罗多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("僧伽难提");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("伽耶舍多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("鸠摩罗多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("阇耶多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("婆修盘头");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("摩拏罗");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("鹤勒那");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("师子");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("婆舍斯多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("不如蜜多");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("般若多罗");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("菩提达摩");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("慧可");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("僧璨");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("道信");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("弘忍");
地址分类树.Nodes[1].Nodes[0].Nodes[1].Nodes[0].Nodes[3].Nodes[1].Nodes.Add("慧能");
地址分类树.ExpandAll();

上面是手动添加,下面发如何把上面这些信息构成一个表,以及用这个表去生树:

DataTable 佛表 = new DataTable(); 佛表.TableName = "佛表";
string[] 名 = new string[] { "世界", "劫名", "佛号", "菩萨", "圣众" };
foreach (string 数据 in 名) 佛表.Columns.Add(数据);
string[, , , ,] 称 = new string[, , , ,]
{ { { {
{ "极乐世界", "无量劫", "阿弥陀佛", "大菩萨", "观世音" },
{ "极乐世界", "无量劫", "阿弥陀佛", "大菩萨", "大势至" },
{ "极乐世界", "无量劫", "阿弥陀佛", "圣众", "无量" },
{ "娑婆世界", "庄严劫", "毗婆尸佛", "大菩萨", "无量" },
{ "娑婆世界", "庄严劫", "尸弃佛", "大菩萨", "无量" },
{ "娑婆世界", "庄严劫", "毗舍浮佛", "大菩萨", "无量" },
{ "娑婆世界", "庄严劫", "毗婆尸佛", "圣众", "无量" },
{ "娑婆世界", "庄严劫", "尸弃佛", "圣众", "无量" },
{ "娑婆世界", "庄严劫", "毗舍浮佛", "圣众", "无量" },
{ "娑婆世界", "贤劫(千佛)", "拘留孙佛", "大菩萨", "无量" },
{ "娑婆世界", "贤劫(千佛)", "拘那含牟尼佛", "大菩萨", "无量" },
{ "娑婆世界", "贤劫(千佛)", "迦叶佛", "大菩萨", "无量" },
{ "娑婆世界", "贤劫(千佛)", "拘留孙佛", "圣众", "无量" },
{ "娑婆世界", "贤劫(千佛)", "拘那含牟尼佛", "圣众", "无量" },
{ "娑婆世界", "贤劫(千佛)", "迦叶佛", "圣众", "无量" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "观世音" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "大势至" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "文殊" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "普贤" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "地藏" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "大菩萨", "弥勒" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "摩诃迦叶" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "阿难" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "商那和修" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "优波毱多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "提多迦" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "弥遮迦" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "婆须蜜多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "佛驮难提" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "伏驮蜜多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "脇" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "富那夜奢" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "马呜" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "迦毗摩罗" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "龙树" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "迦那提婆" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "罗睺罗多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "僧伽难提" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "伽耶舍多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "鸠摩罗多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "阇耶多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "婆修盘头" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "摩拏罗" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "鹤勒那" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "师子" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "婆舍斯多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "不如蜜多" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "般若多罗" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "菩提达摩" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "慧可" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "僧璨" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "道信" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "弘忍" },
{ "娑婆世界", "贤劫(千佛)", "释迦牟尼佛", "禅宗祖师", "慧能" }
} } } }; int 行 = 0, 列 = 0;
foreach (string 数据 in 称)
{ if (列 == 0)佛表.Rows.Add(); 佛表.Rows[行][列] = 数据; 列++; if (列 == 5) { 行++; 列 = 0; } }
玄龙戏珠无级树(佛表);

之后将逐步发代码和讲解软件构思和设计具体细节,以及一些细节设计的理由和判断条件限制,做为一个案例,当然,知道自己水平有限,只是看新学提问就多,故此发布,仅资参考,抛砖引玉而已。

下次将发布软件开发最首要关心的问题,如何打开Excel文件,获取需要列的数据显示到表格内做修改。

关于Excel操作编写的一个软件设计构思案例[连载]相关推荐

  1. 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改

    如何打开Excel文件,获取需要列的数据显示到表格内做修改? DataSet 读取表格数据 = new DataSet(); Thread 读取, 更新; int 计数 = 0, 定位 = 0, 原条 ...

  2. 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)

    导出数据到Excel文件中二种方法四种形式:其一是创建新的Excel文件实例写入数据:其二是打开已有Excel文档对其执行更新或插入数据:保存文档方法有:直接保存(2种).另存.间接保存.接下来分别介 ...

  3. 一般性网络错误 请检查网络文档_如何编写好的软件设计文档

    原文链接 作为一名软件工程师,我花了很多时间阅读和编写设计文档.在研究了数百篇这样的文档之后,我发现好的文档与项目成功之间有很强的关联性. 在本文中,我尝试去说明如何才能编写好的设计文档. 本文分为4 ...

  4. 【软件设计】如何了解一个软件的设计?

    如何了解一个软件的设计? 首先是模型,它是一个软件的核心部分,也有人称之为抽象.设计最关键的就是构建出模型. 而理解一个设计中的模型,可以帮助我们建立起对这个软件整体的认知. 比如: 你在编写分布式计 ...

  5. 如何了解一个软件的设计?

    刚入职,接手新项目,面对一个全新项目,怎么快速研究它? 很多人直接看源码,一头扎入代码,很快就迷失其中,最初那股子探索精神,也会逐渐被迷茫所替.有多少次你满怀激情打开一个开源项目,结果多半坚持不了就放 ...

  6. 计算机一级excel0分,探究计算机一级Word和Excel操作自动评分的实现

    Word 和Excel 操作自动评分是计算机一级评分中的重要内容,计算机一级涉及考生多,实现公正客观的评分并不容易.在计算机一级评分过程中工作人员可以通过VBA 技术来实现对考生答案的自动评分.当前在 ...

  7. 从零开始学习Java设计模式 | 软件设计原则篇:开闭原则

    从本讲开始,咱们就要开始学习第一章中的第三部分内容,即软件设计原则了. 在软件开发中,为了提高软件系统的可维护性和可复用性,增加软件的可扩展性和灵活性,程序员要尽量根据6条原则来开发程序,从而提高软件 ...

  8. 在软件设计前先画界面图

    hennry注: 需求<-同时做->界面(html/css) <-->  开发 不过最好用"快速后台数据"填充界面 画出全部(几乎)界面图好似不敏捷?疑问? ...

  9. 软件设计是决定软件性能的关键

    大家更多的是关注测试工具,测试技巧,而少有人去从根本上来分析.测试软件.一个优秀的软件性能测试工程师要具有宏观和微观的软件测试观.他要分析软件的 架构,了解软件的运行模式,了解通讯协议,更是一个软件开 ...

  10. 《挖掘管理价值:企业软件项目管理实战》一2.4 软件设计过程

    本节书摘来异步社区<挖掘管理价值:企业软件项目管理实战>一书中的第2章,第2.4节,作者: 徐勤 责编: 杨海玲, 更多章节内容可以访问云栖社区"异步社区"公众号查看. ...

最新文章

  1. I'm stuck! ccf模拟题。
  2. OpenCV Error: Sizes of input arguments do not match (The operation is neither 'array op array' (wher
  3. 打开浏览器不是主页_网络没问题但是浏览器打开主页却显示网络连接错误
  4. 谈API网关的背景、架构以及落地方案--转
  5. 企业级IM应该帮助员工提高绩效,避免无关的信息干扰
  6. 第7篇:Flowable-Modeler集成之Flowable源码编译
  7. CentOS 7编译程序后的环境变量设置
  8. struts1基础入门
  9. 我为什么反对 Google 拍卖 Android 搜索引擎选项?
  10. Apache Flume 简介
  11. python pandas series_Python Pandas 系列Series
  12. Java打印斐波那契数列
  13. php1108脱机使用,惠普p1108能扫描吗 打印机出现脱机解决方法【详解】
  14. 因子分析 factor analysis (六) :用因子分析法进行综合评价
  15. Android系统版本(截止2022年2月)
  16. Macbook安装win7和恢复系统的方法
  17. 算法系列——寻找峰值 (Find Peak Element)
  18. 中国公交广告高峰论坛——天津
  19. Python编程学习视频
  20. Unity3D教程:触发器实现简单的场景跳转

热门文章

  1. win10 计算机菜单,win10系统计算机界面菜单栏不见了的还原方案
  2. html5 新增input类型,html5新增的input类型
  3. 伊利洛伊大学厄巴纳-香槟分校计算机专业,伊利诺伊大学厄巴纳香槟分校哪些专业比较好?...
  4. system/app 下 精简程序
  5. 由对称引起的空间结构耦合效应
  6. 使用 Docker 部署 MediaWiki
  7. WinRar DOS命令大全带详细参数rar/zip/7z压缩文件解密
  8. Navicat Premium 15 注册出现 No All Pattern Found! File Already Patched?
  9. 协会元宇宙产业园基地孵化器授牌案例:循环经济元宇宙加速基地
  10. Android护眼功能