关于Excel操作编写的一个软件设计构思案例[连载]
来源:互联网 发布:网络架构师培训 编辑:程序博客网 时间:2024/04/30 05:33
最近紧急开发一个操作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操作编写的一个软件设计构思案例[连载] --如何创建快捷菜单执行人机交互操作、软件初始化设置
- 关于Excel操作编写的一个软件设计构思案例[连载] --保存条件设定的另一种方式:更新与插入方法
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何把处理好后的数据导出Excel文件中(含背景\字体颜色设置)
- 关于Excel操作编写的一个软件设计构思案例[连载] --如何实现从字符串中提取需要的字符并赋值给指定单元格内
- 关于Excel操作编写的一个软件设计构思案例[连载] --辅助功能:补全缺少数据、树定位、文本读与保存
- [构思]设计&实现一个执行Excel的Import&Export操作的类
- 关于软件设计文档编写
- 关于 唱票软件以及系统的一个构思
- Excel 脚本编写:系列连载
- 软件设计的测试团队组建——构思篇
- 一个简单项目的构思
- C#关于excel读写操作的一个类
- POI操作Excel的简单案例
- Excel:常用操作的各种案例
- 项目中的一个AOP的编写案例(配置+案例)
- 关于软件设计的心得
- 用CMD开启Windows下的服务命令-汇总
- Intent action整理
- ORA-00257: archiver error. Connect internal only, until freed 错误的处理方法
- VitualBox安装CENTOS图文教程(3)——软件镜像光盘安装方法
- VC 用发音函数Beep()播放简谱音乐
- 关于Excel操作编写的一个软件设计构思案例[连载]
- 一千以内的素数
- s3c6410 uart 裸机 轮询 非fifo
- C# 中typeof()方法与GetType()方法区别
- linux uart驱动分析(phy3250开发板)
- 电饭煲食谱之鸡汤鸡翅老卤蛋
- Monkey 测试
- Spring MVC的annotaction配置详解
- ORA-30052错误:修改undo-retention