关于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文件,获取需要列的数据显示到表格内做修改。