|
楼主 |
发表于 2012-11-9 19:16
|
显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件 ★ 免费下载 ★ ★ 使用帮助★
继续改进演练项目
改进了在Sheet1_Startup过程里的细节操作,在这个过程里除非必须的工作表初始化操作外尽量不加过程细节代码。
增加了一个简单的字典操作,字典在Excel数据分析里起很大作用。- using System;
- using System.Collections.Generic;
- using System.Data;
- using System.Text;
- using System.Xml;
- using System.Windows.Forms;
- using Microsoft.Office.Tools.Excel;
- using Microsoft.VisualStudio.Tools.Applications.Runtime;
- using Excel = Microsoft.Office.Interop.Excel;
- using Office = Microsoft.Office.Core;
- //System.Collections.Generic;使用字典
- namespace ExcelWorkbook4
- {
- public partial class Sheet1
- {
- //VBA代码: Dim sh As Worksheet
- Excel.Worksheet sh;
- //VBA代码:Set rng1 = Range("c1")
- Excel.Range rng1 = null;
-
- private void Sheet1_Startup(object sender, System.EventArgs e)
- {
- //Sheet1_Startup当工作表启动前需要完成的操作在这里执行
- //这里的位置应该减少细节操作,用子过程完成
-
- //调用子过程1,工作表单元格的赋值操作,列宽调整
- this.Demo1();
-
- //调用数组操作子过程,数组向工作表Range范围赋值
- this.DemoArray();
- //字典的简单操作,字典在统计和分析数据起很大的作用
- this.DemoDic();
- }
- private void Sheet1_Shutdown(object sender, System.EventArgs e)
- {
- //工作表关闭前需要执行的操作
- }
- private void Demo1()
- {
- //VBA代码:Dim rng1 As Range
- //VBA代码:Set sh = ActiveSheet
- sh = this.Application.ActiveSheet;
- //VBA代码:sh.Cells(1, 5) = Now
- sh.Cells[1 , 5].value = System.DateTime.Now;
- //VBA代码:sh.Cells(1, 5).Columns.AutoFit,自动调整列宽
- sh.Cells[1 , 5].EntireColumn.AutoFit();
- //自定义函数或子过程,这里示意一个返回F列最大使用行值
- }
- private void DemoArray()
- {
- //子过程代码,数组定义,数组操赋值,把数组赋值给工作表Range
- Excel.Range rng=null;
- //VBA代码: Dim theArray(0 to 5,0 to 10)
- int[,] theArray = new int[5, 10];
- rng = Application.get_Range("b1", missing);
- //Rank方法,返回数组的维度,这个VBA没有
- rng.Value2= "数组维度 " + theArray.Rank;
- //VBA代码:Dim m As Long
- int m = 0;
- //两个循环 For i = 0 to 5
- // For j = 0 to 10
- // m=m + 1
- // theArray(i,j) =m
- for (int i = 0; i <= theArray.GetUpperBound(0); i++)
- for (int j = 0; j <= theArray.GetUpperBound(1); j++)
- {
- m++;
- theArray[i,j] = m;
- }
- //VBA代码:Set rng = Range("f1:o5")
- rng = Application.get_Range("f1", "o5");
- //VBA代码:rng.Value = theArray 赋值给工作表Range
- rng.Value2 = theArray;
- int iRow;
- rng = Application.get_Range("f1", missing);
- //VBA代码:iRow = sh.Range("f1").End(xlDown).Row 取F列最大使用行
- iRow = rng.get_End(Excel.XlDirection.xlDown).Row;
- rng1 = Application.get_Range("c1", missing);
- //VBA代码:rng1.Value2 = "F列最大使用 " + lRow 赋值给引用对象。
- rng1.Value2 = "F列最大使用 " + iRow;
- }
-
- private void DemoDic()
- {
- Dictionary<string, string> dic =
- new Dictionary<string, string>();
- //向字典添加值
- dic.Add("aa", "a1");
- dic.Add("bb", "b1");
- dic.Add("cc", "c1");
- //调用字典元素
- MessageBox.Show(dic["bb"]);
- //检测是否存在ee
- if (!dic.ContainsKey("ee"))
- {
- dic.Add("ee", "e1");
- }
- }
-
-
- #region VSTO 设计器生成的代码
- /// <summary>
- /// 设计器支持所需的方法 - 不要
- /// 使用代码编辑器修改此方法的内容。
- /// </summary>
- private void InternalStartup()
- {
- this.Startup += new System.EventHandler(Sheet1_Startup);
- this.Shutdown += new System.EventHandler(Sheet1_Shutdown);
- }
- #endregion
- }
- }
复制代码 |
评分
-
1
查看全部评分
-
|