Office中国论坛/Access中国论坛

标题: 【练习】Dictionary去除源数据中的重复项 [打印本页]

作者: 醉酒狂生    时间: 2014-2-28 15:02
标题: 【练习】Dictionary去除源数据中的重复项
本帖最后由 faunus 于 2014-2-28 16:42 编辑

[attach]53231[/attach]


这是刚撸的代码,新鲜热辣。作用嘛就是为了将"数据表"中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),在此谢谢(佛爷、汪老师、西西)


作者: faunus    时间: 2014-2-28 16:44
今天 撸这个。
作者: hehex    时间: 2014-2-28 19:37
已撸。
不过有点疑问,似乎不应该使用外接程序吧?这个明明是涉及到工作薄的具体操作。是否应该从工作薄入口进去写码?
对C# 容器和泛型完全不懂,撸完也是一头雾水
作者: tianping    时间: 2014-3-1 09:38
昨天没顾上,今天撸
作者: Amas    时间: 2014-3-4 09:01
代码能做一下注释就好了,容易理解思路。
作者: oldyuan    时间: 2014-5-7 21:29
遍历区域的方法。在VBA里一般是将数据读取到数组中,然后遍历数组。看了半天也没找到像VBA那样将区域转数组的方法。哎!




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3