设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 10491|回复: 5
打印 上一主题 下一主题

【练习】Dictionary去除源数据中的重复项

[复制链接]

点击这里给我发消息

跳转到指定楼层
1#
发表于 2014-2-28 15:02:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 faunus 于 2014-2-28 16:42 编辑




这是刚撸的代码,新鲜热辣。作用嘛就是为了将"数据表"中A列的单位名称去重后放到碗里去(combobox控件)。闲话不讲,直接上代码:
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Windows.Forms;
  7. using System.Xml.Linq;
  8. using Microsoft.Office.Tools.Excel;
  9. using Microsoft.VisualStudio.Tools.Applications.Runtime;
  10. using Excel = Microsoft.Office.Interop.Excel;
  11. using Office = Microsoft.Office.Core;

  12. namespace Test
  13. {
  14.     public partial class Sheet1
  15.     {
  16.         private void Sheet1_Startup(object sender, System.EventArgs e)
  17.         {
  18.             Excel.Worksheet shD = Application.ActiveWorkbook.Worksheets["数据表"];
  19.             Excel.Range rnAll = shD.Range["A2:A" + Convert.ToString(shD.Range["A1"].End[Excel.XlDirection.xlDown].Row)];
  20.             Dictionary<String,Int32> dicName1 = new Dictionary<string,Int32>();
  21.             String  valStr;
  22.             foreach (Excel.Range rn in rnAll)
  23.             {
  24.                valStr = Convert.ToString(rn.Value);
  25.                dicName1[valStr] = rn.Row;
  26.             }
  27.             Dictionary<string, Int32>.KeyCollection keyColl = dicName1.Keys;                       
  28.             foreach (string s in keyColl)
  29.             {
  30.                 comboBox1.Items.Add(s);
  31.             }               
  32.         }

  33.         private void Sheet1_Shutdown(object sender, System.EventArgs e)
  34.         {
  35.         }

  36.         #region VSTO 设计器生成的代码

  37.         /// <summary>
  38.         /// 设计器支持所需的方法 - 不要
  39.         /// 使用代码编辑器修改此方法的内容。
  40.         /// </summary>
  41.         private void InternalStartup()
  42.         {
  43.             this.Startup += new System.EventHandler(this.Sheet1_Startup);
  44.             this.Shutdown += new System.EventHandler(this.Sheet1_Shutdown);
  45.         }

  46.         #endregion

  47.         public EventHandler comboBox1_SelectedIndexChanged { get; set; }
  48.         public MouseEventHandler comboBox1_MouseClick { get; set; }
  49.         public Excel.DocEvents_ActivateEventHandler Sheet1_ActivateEvent { get; set; }
  50.         public Excel.DocEvents_ChangeEventHandler Sheet1_Change { get; set; }      
  51.     }
  52. }
复制代码
下面是附件,有兴趣的盆友可下载了试一试。
能想到的运行环境(office2010-vs2010),在此谢谢(佛爷、汪老师、西西)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1V币 +3 收起 理由
faunus + 3 (V币)优秀原创教程、管理建议(1-5分)

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享分享 分享淘帖 订阅订阅
2#
发表于 2014-2-28 16:44:24 | 只看该作者
今天 撸这个。
3#
发表于 2014-2-28 19:37:04 | 只看该作者
已撸。
不过有点疑问,似乎不应该使用外接程序吧?这个明明是涉及到工作薄的具体操作。是否应该从工作薄入口进去写码?
对C# 容器和泛型完全不懂,撸完也是一头雾水
4#
发表于 2014-3-1 09:38:03 | 只看该作者
昨天没顾上,今天撸
5#
发表于 2014-3-4 09:01:12 | 只看该作者
代码能做一下注释就好了,容易理解思路。
6#
发表于 2014-5-7 21:29:09 | 只看该作者
遍历区域的方法。在VBA里一般是将数据读取到数组中,然后遍历数组。看了半天也没找到像VBA那样将区域转数组的方法。哎!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-11-1 07:14 , Processed in 0.077386 second(s), 31 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表