如何从(0-9 A-Z)里面生成一个8位的随机数(不含0和o的)?

onekey 2006-06-30 09:39:55
例如生成结果为 AQ7F88G7
...全文
394 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
fcuandy 2006-06-30
  • 打赏
  • 举报
回复
最好的办法还是放到前台程序里写算法。
fcuandy 2006-06-30
  • 打赏
  • 举报
回复
Haiwer(海阔天空) ( ) 信誉:138 2006-06-30 10:36:00 得分: 0


楼上两位
直接用newid()不对,因为newid()的格式是
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字
少了g-z
----------------------------

说的也是。 不过要看楼主要求了。
对于newid()的前8位,是{1-9,a-z}组成8位字串的所有组合 的子集, 如果楼主要求取一个字串,而不是列出所有,我觉得这没什么问题。
如果要求这字串里必须出现 g-z中的一个,那就要改了.

你的那种思路,看到楼主的要求时,我就试过
我用了一个表变量,插入1-9,a-z(除o) 34条记录,然后 join, 再TOP 1 ,ORDER BY NEWID(),根本无法运行。
这比自己用程序(如c/c++)算出所有组合还慢。
而且你的写法有问题: 在循环中用了递规查询变量,递规查询变量本身就可以..,再套用循环肯定是错的。


昵称被占用了 2006-06-30
  • 打赏
  • 举报
回复
lz:
直接用newid()的达不到要求,上面说了

结贴后回复只是希望lz能得到正确的答案


onekey 2006-06-30
  • 打赏
  • 举报
回复
fcuandy(要学的东西还很多)
的方法也可以,比较简单
昵称被占用了 2006-06-30
  • 打赏
  • 举报
回复
楼上两位
直接用newid()不对,因为newid()的格式是
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字
少了g-z
fcuandy 2006-06-30
  • 打赏
  • 举报
回复
DECLARE @s CHAR(8)
WHILE @s IS NULL OR CHARINDEX('0',@s)>0 OR CHARINDEX('o',@s)>0
SELECT @s= RTRIM(LEFT(newid(),8))
SELECT @s
onekey 2006-06-30
  • 打赏
  • 举报
回复
这么费劲?
不能根据select (left(newid(),8)),然后从中排除包含"0"和"o"的吗?
fcuandy 2006-06-30
  • 打赏
  • 举报
回复
交给前台程序算法实现。
昵称被占用了 2006-06-30
  • 打赏
  • 举报
回复
declare @s varchar(10)
set @s=''

while len(@s)<8
select @s=@s+a
from (
select 'A' as a
union all
select 'B' as a
union all
select 'C' as a
union all
...
select 'N' as a
union all
select 'P' as a
union all
...
select 'Z' as a
union all
select '1' as a
union all
select '2' as a
union all
...
select '9' as a
) as t
order by newid()

print @s
昵称被占用了 2006-06-30
  • 打赏
  • 举报
回复
(不含0和o的)?
 数据的加密与解密  文件的加密与解密 第 章 加密与解密技术 第19章 加密与解密技术 829 19.1 数据的加密与解密 实例571 异或算法对数字进行加密与解密 光盘位置:光盘\MR\19\571 中级 趣味指数: 实 例说明 在实现本实例之前先来简要了解一下加密的概念,加密是指通过 某种特殊的方法,更改已有信息的内容,使得未授权的用户即使得到 了加密信息,如果没有正确解密的方法,也无法得到信息的内容。谈 到加密的话题,一些读者一定非常感兴趣,而且会联想到复杂的加密 算法,本实例主要使用异或“^”运算符简单地实现了对数字加密的 功能。实例运行效果如图19.1 所示。 关 键技术 本实例实现时主要使用了“异或”运算符对数字进行“异或”运 算,以达到简单加密数字的目的,下面对其进行详细讲解。 “异或”运算符“^”用于比较两个二进制数的相应位。在执行按位“异或”运算时,如果两个二进制数的 相应位都为1 或两个二进制数的相应位都为0,则返回0;如果两个二进制数的相应位其中一个为1 一个为0, 则返回1。 现在来了解一下使用“异或”加密或解密的执行过程,数值23 转换为二进制为10111,加密数字的数值15 转换为二进制为1111。对比两个二进制的值,从右向左按位对比,如果两个二进制数的相应位都为1 或两个二 进制数的相应位都为0,则返回0;如果两个二进制数的相应位中一个为1 一个为0,则返回1,最后得到的结 果为二进制值11000,该值转换为十进制为24,所以得到的加密结果为24。而解密过程也很简单,只是将加密 结果24与加密数字15 进行“异或”运算,将24 转换为二进制值11000,将15 转换为二进制值1111,进行“异 或”运算后,得到结果为23,这样又还原了加密的数据。  说明:本实例只是简单地使用了“异或”运算符计算两个整型数值以达到加密的目的,所以本实例只可以 对整型数值进行加密运算,并不适合其他数据的加密。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为Encrypt。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个GroupBox 容器控件,其中, 在第一个GroupBox 中放入3 个TextBox 控件和一个Button 按钮,分别用于输入数字、输入加密数字、显示加 密后的数字和计算加密信息;在第二个GroupBox 中放入一个TextBox 控件和一个Button 按钮,分别用于显示 解密后的信息和计算解密信息。 (3)程序主要代码如下: private void btn_Encrypt_Click(object sender, EventArgs e) { int P_int_Num, P_int_Key; //定义两个值类型变量 if (int.TryParse(txt_Num.Text, out P_int_Num) //判断输入是否是数值 && int.TryParse(txt_Key.Text, out P_int_Key)) { txt_Encrypt.Text = (P_int_Num ^ P_int_Key).ToString(); //加密数值 } else 图19.1 异或算法对数字进行加密与解密 C#开发实战1200 例(第II卷) 830 { MessageBox.Show("请输入数值", "出现错误!"); //提示输入信息不正确 } } private void btn_Revert_Click(object sender, EventArgs e) { int P_int_Key, P_int_Encrypt; //定义两个值类型变量 if (int.TryParse(txt_Encrypt.Text, out P_int_Key) //判断输入是否是数值 && int.TryParse(txt_Key.Text, out P_int_Encrypt)) { txt_Revert.Text = (P_int_Encrypt ^ P_int_Key).ToString(); //解密数值 } else { MessageBox.Show("请输入数值", "出现错误!"); //提示输入信息不正确 } } 秘 笈心法 心法领悟571:简述“异或”运算符。 本实例使用了“异或”运算符,但是在使用“异或”运算符之前,有必要了解“异或”运算符所做的“异 或”运算的机制,“异或”运算符“^”用于比较两个二进制数的相应位。在执行按位“异或”运算时,如果两 个二进制数的相应位都为1 或两个二进制数的相应位都为0,则返回0;如果两个二进制数的相应位中一个为1 一个为0,则返回1。 实例572 使用MD5算法加密数据 光盘位置:光盘\MR\19\572 中级 趣味指数: 实 例说明 MD5(Message-Digest Algorithm 5)是一种被广泛使用的“消息-摘要 算法”。“消息-摘要算法”实际上就是一个单项散列函数,数据块通过单 向散列函数得到一个固定长度的散列值,数据块的签名就是计算数据块的散 列值,MD5 算法的散列值为128 位。本实例演示如何使用MD5 算法对用户 输入的密码进行加密,实例运行效果如图19.2 所示。 关 键技术 本实例在实现时主要用到了MD5类的ComputeHash 方法,下面对其进行详细讲解。 MD5 类表示MD5 哈希算法的所有实现均从中继承的抽象类,该类位于System.Security.Cryptography 命名 空间下,其ComputeHash 方法有3种重载形式,分别介绍如下。  计算指定字节数组的哈希值,语法格式如下: public byte[] ComputeHash(byte[] buffer) 参数说明  buffer:要计算其哈希代码的输入。  返回值:计算所得的哈希代码。  计算指定Stream 对象的哈希值,语法格式如下: public byte[] ComputeHash(Stream inputStream) 参数说明  inputStream:要计算其哈希代码的输入。  返回值:计算所得的哈希代码。 图19.2 使用MD5 算法加密数据 第19章 加密与解密技术 831  计算指定字节数组的指定区域的哈希值,语法格式如下: public byte[] ComputeHash(byte[] buffer,int offset,int count) ComputeHash 方法中的参数及说明如表19.1 所示。 表19.1 ComputeHash方法中的参数及说明 参 数 说 明 buffer 要计算其哈希代码的输入 offset 字节数组中的偏移量,从该位置开始使用数据 count 数组中用作数据的字节数 返回值 计算所得的哈希代码  说明:本实例用到了ComputeHash 方法的第一种重载形式。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为MD5Arithmetic。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个TextBox 控件,分别用来输入 要加密的数据和显示加密后的字符串;添加一个Button 控件,用来使用MD5算法对输入的数据进行加密。 (3)程序主要代码如下: public string Encrypt(string strPwd) { MD5 md5 = new MD5CryptoServiceProvider(); //创建MD5 对象 byte[] data = System.Text.Encoding.Default.GetBytes(strPwd); //将字符编码为一个字节序列 byte[] md5data = md5.ComputeHash(data); //计算data字节数组的哈希值 md5.Clear(); //清空MD5 对象 string str = ""; //定义一个变量,用来记录加密后的密码 for (int i = 0; i < md5data.Length - 1; i++) //遍历字节数组 { str += md5data[i].ToString("x").PadLeft(2, '0'); //对遍历到的字节进行加密 } return str; //返回得到的加密字符串 } private void button1_Click(object sender, EventArgs e) { string P_str_Code = textBox1.Text; //记录要加密的密码 textBox2.Text = Encrypt(P_str_Code); //显示加密后的字符串 } 秘 笈心法 心法领悟572:如何判断是否为数字? 开发程序时,经常需要判断输入的字符串是否为数字,如判断输入的电话号码、货币金额和邮编等。在程 序中判断是否为数字的方法有很多种,可以使用正则表达式、int.Parse 方法和double.Parse 方法等。下面的代码 通过double.Parse 方法判断textBox1 文本框中的输入是否为数字。 double.Parse(textBox1.Text); 实例573 使用ROT13算法加密解密数据 光盘位置:光盘\MR\19\573 中级 趣味指数: 实 例说明 文件加密可以避免造成重要信息的泄漏,复杂的加密算法可以将信息加密得非常繁杂,但是对于一般的应 用,没有必要作类似于PGP、RSA 或DES 等复杂的加密算法。本实例介绍如何使用ROT13 算法加密和解密数 C#开发实战1200 例(第II卷) 832 据。实例运行效果如图19.3 所示。 图19.3 使用ROT13算法加密解密数据 关 键技术 本实例实现时,主要是用Convert 类的ToChar 方法来获取单个字符的Unicode 编码,然后将字母的前13 个和后13 个对调,从而实现加密的功能。下面对Convert类的ToChar 方法进行详细讲解。 ToChar 方法返回指定的Unicode字符值,并且不执行任何实际的转换,其语法格式如下: public static char ToChar (char value) 参数说明 value:一个Unicode 字符。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为ROT13Encrypt。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个TextBox 控件,分别用来显示 原始数据和解密后的数据;添加两个Button 控件,分别用来实现利用ROT13算法加密和解密数据的功能。 (3)程序主要代码如下: public string ROT13Encode(string InputText) { char tem_Character; //存储临时字符 int UnicodeChar; //存储临时字符的字节值 string EncodedText = ""; //存储加密或解密后的字符串 for (int i = 0; i = 97 && UnicodeChar = 110 && UnicodeChar = 65 && UnicodeChar = 78 && UnicodeChar <= 90) //对字符进行解密 { UnicodeChar = UnicodeChar - 13; } EncodedText = EncodedText + (char)UnicodeChar; //得到加密或解密字符串 } return EncodedText; //返回加密或解密后的字符串 } 秘 笈心法 心法领悟573:如何在字符串中查找指定字符? 在字符串中查找指定字符时,可以先将字符串显示在richTextBox 控件中,然后利用richTextBox 类的Find 方法在该控件中查找指定字符。在字符串中查找指定字符的代码如下: 第19章 加密与解密技术 833 M_int_index = richTextBox1.Find(textBox1.Text.Trim(), M_int_index, RichTextBoxFinds.MatchCase); if (M_int_index == -1) { MessageBox.Show("没有要查找的字符串", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); M_int_index = 0; } else M_int_index = M_int_index + textBox1.Text.Trim().Length; richTextBox1.Focus(); 实例574 使用恺撒密码算法加密密码 光盘位置:光盘\MR\19\574 中级 趣味指数: 实 例说明 恺撒密码据传是古罗马恺撒大帝用来保护重要军情的加密系统,它 是一种置换密码,通过将字母顺序推后起到加密作用。例如,将字母顺 序推后3 位,字母A 将被推作为字母D,字母B 将被推作字母E。本实 例使用C#实现了恺撒加密的算法,实例运行效果如图19.4 所示。 关 键技术 本实例实现时主要用到了string 类的ToCharArray 方法和Convert 类的ToChar 方法,下面分别对它们进行 详细介绍。 (1)string类的ToCharArray 方法 string类的ToCharArray 方法用来将字符串中的字符复制到Unicode 字符数组,该方法有两种重载形式,本 实例中用到的它的重载形式如下: public char[] ToCharArray() 参数说明 返回值:元素为此字符串的各字符的Unicode 字符数组。如果此字符串是空字符串,则返回的数组为空且 长度为零。 (2)Convert 类的ToChar 方法 Convert 类的ToChar 方法用来将指定的值转换为Unicode 字符,该方法为可重载方法,本实例中用到的它 的重载形式如下: public static char ToChar(int value) 参数说明  value:32 位有符号整数。  返回值:等效于value 的值的Unicode 字符。 设 计过程 (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为CaesarArithmetic。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个TextBox 控件,分别用来输入 要加密的数据和显示加密后的字符串;添加一个Button 控件,用来使用恺撒密码算法对输入的数据进行加密。 (3)程序主要代码如下: public int AscII(string str) //获取字符的ASCII 码 { byte[] array = new byte[1]; //创建字节数组 array = System.Text.Encoding.ASCII.GetBytes(str); //为字节数组赋值 int asciicode = (short)(array[0]); //获取字节数组的第一项 return asciicode; //返回字节数组的第一项 } 图19.4 使用恺撒密码算法加密密码 C#开发实战1200 例(第II卷) 834 public string Caesar(string str) //凯撒加密算法的实现 { char[] c = str.ToCharArray(); //创建字符数组 string strCaesar = ""; //定义一个变量,用来存储加密后的字符串 for (int i = 0; i < str.Length; i++) //遍历字符串中的每一个字符串 { string ins = c[i].ToString(); //记录遍历到的字符 string outs = ""; //定义一个变量,用来记录加密后的字符串 bool isChar = "0123456789abcdefghijklmnopqrstuvwxyz".Contains(ins.ToLower()); //判断指定的字符串中是否包含遍历到的字符 bool isToUpperChar = isChar && (ins.ToUpper() == ins); //判断遍历到的字符是否是大写 ins = ins.ToLower(); //将遍历到的字符转换为小写 if (isChar) //判断指定的字符串中是否包含遍历到的字符 { int offset = (AscII(ins) + 5 - AscII("a")) % (AscII("z") - AscII("a") + 1); //获取字符的ASCII 码 outs = Convert.ToChar(offset + AscII("a")).ToString(); //转换为字符并记录 if (isToUpperChar) //判断是否大写 { outs = outs.ToUpper(); //全部转换为大写 } } else { outs = ins; //记录遍历的字符 } strCaesar += outs; //添加到加密字符串中 } return strCaesar; //返回加密后的字符串 } 秘 笈心法 心法领悟574:如何将新字符串添加到已有字符串中? 将新字符串添加到已有字符串中时,可以先声明一个StringBuilder类对象,以指定已有字符串的长度可变, 然后利用该对象的Append方法在字符串中添加指定字符串。将新字符串添加到已有字符串的代码如下: StringBuilder strbuilder = new StringBuilder(textBox1.Text.Trim()); strbuilder.Append(textBox2.Text.Trim()); textBox3.Text = strbuilder.ToString(); 实例575 对数据报进行加密保障通信安全 光盘位置:光盘\MR\19\575 高级 趣味指数: 实 例说明 网络传输数据时,有时候传输信息容易被不法分子截获而 用作其他用途。这样,如果传输的数据中包含有重要秘密,将 会造成非常严重的后果。为了防止这种情况的发生,可以对网 络中传输的数据进行加密,用户接收到数据后再进行解密查看, 这样可以更好地保障网络通信安全。运行本实例,首先设置端 口号,然后在窗体左下方的文本框中输入聊天信息,单击“发 送”按钮,向局域网中发送聊天信息,同时在右侧的“数据传 输信息”栏中显示数据报的发送、接收及丢失情况。实例运行 效果如图19.5 所示。 关 键技术 本实例获取数据报信息时主要用到IPGlobalProperties和UdpStatistics类,而在对数据报加密时用到DESCrypto 图19.5 对数据报进行加密保障通信安全 第19章 加密与解密技术 835 ServiceProvider 和CryptoStream 类,其中DESCryptoServiceProvider 继承于DES 类。下面对本实例中用到的关 键技术进行详细讲解。 (1)IPGlobalProperties 类 IPGlobalProperties 类提供有关本地计算机的网络连接的信息,本实例中用到它的GetIPGlobalProperties 和 GetUdpIPv4Statistics 方法,下面分别进行介绍。 GetIPGlobalProperties 为静态方法,主要用来获取一个对象,该对象提供有关本地计算机的网络连接和通信 统计数据的信息,其语法格式如下: public static IPGlobalProperties GetIPGlobalProperties() 参数说明 返回值:IPGlobalProperties 对象,该对象包含有关本地计算机的信息。 GetUdpIPv4Statistics 方法主要用来提供本地计算机的用户数据报协议/Internet 协议版本4 (UDP/IPv4)统 计数据,其语法格式如下: public abstract UdpStatistics GetUdpIPv4Statistics() 参数说明 返回值:UdpStatistics 对象,提供本地计算机的UDP/IPv4通信统计数据。 例如,本实例中创建IPGlobalProperties 对象,及调用其GetUdpIPv4Statistics 方法创建UdpStatistics 对象的 代码如下: IPGlobalProperties NetInfo = IPGlobalProperties.GetIPGlobalProperties(); UdpStatistics myUdpStat = null; myUdpStat = NetInfo.GetUdpIPv4Statistics(); (2)UdpStatistics类 UdpStatistics 类提供用户数据报协议(UDP)统计数据,本实例中主要用到其DatagramsSent 属性、 DatagramsReceived属性和IncomingDatagramsDiscarded 属性,其中,DatagramsSent 属性用来获取已发送的用户 数据报协议(UDP)数据报的数量,DatagramsReceived 属性用来获取已接收的用户数据报协议(UDP)数据报 的数量,IncomingDatagramsDiscarded 属性用来获取已收到但因端口错误而丢弃的用户数据报协议(UDP)数据 报的数量。 例如,本实例中初始化已发送、已接收和丢失数据报的实现代码如下: SendNum1 = Int32.Parse(myUdpStat.DatagramsSent.ToString()); //记录发送的数据报 ReceiveNum1 = Int32.Parse(myUdpStat.DatagramsReceived.ToString()); //记录接收的数据报 DisNum1 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString()); //记录丢失的数据报  说明:IPGlobalProperties 类和UdpStatistics 类位于System.Net.NetworkInformation 命名空间下。 (3)DES 类 DES 类表示所有DES 实现都必须从中派生的数据加密标准(DES)算法的基类,其CreateEncryptor 方法和 CreateDecryptor 方法分别用来加密和解密。 CreateEncryptor 方法使用指定的Key属性和初始化向量(IV)创建对称加密器对象,其语法格式如下: public abstract ICryptoTransform CreateEncryptor(byte[] rgbKey,byte[] rgbIV) 参数说明  rgbKey:用于对称算法的密钥。  rgbIV:用于对称算法的初始化向量。  返回值:对称加密器对象。 CreateDecryptor 方法使用指定的Key属性和初始化向量(IV)创建对称解密器对象,其语法格式如下: public abstract ICryptoTransform CreateDecryptor(byte[] rgbKey,byte[] rgbIV) 参数说明  rgbKey:用于对称算法的密钥。  rgbIV:用于对称算法的初始化向量。  返回值:对称解密器对象。 C#开发实战1200 例(第II卷) 836 (4)CryptoStream 类 CryptoStream 类定义将数据流链接到加密转换的流,其构造函数的语法格式如下: public CryptoStream(Stream stream,ICryptoTransform transform,CryptoStreamMode mode) 参数说明  stream:对其执行加密转换的流。  transform:要对流执行的加密转换。  mode:CryptoStreamMode 枚举值之一,CryptoStreamMode 枚举值及说明如表19.2 所示。 表19.2 CryptoStreamMode枚举值及说明 枚 举 值 说 明 Read 对加密流的读访问 Write 对加密流的写访问 另外,在向加密或解密流中写入数据时用到CryptoStream 类的Write 方法,该方法将一个字节序列写入当 前CryptoStream,并将流中的当前位置提升写入的字节数,其语法格式如下: public override void Write(byte[] buffer,int offset,int count) 参数说明  buffer:字节数组,此方法将count 个字节从buffer 复制到当前流。  offset:buffer 中的字节偏移量,从此偏移量开始将字节复制到当前流。  count:要写入当前流的字节数。  说明:DES 类和CryptoStream 类位于System.Security.Cryptography 命名空间下。 设 计过程 (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为EncryptDataReport。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加两个RichTextBox 控件,分别用来 输入聊天信息和显示聊天信息;添加4 个TextBox 控件,分别用来输入端口号和显示已发送数据报、已接收数 据报、丢失数据报;添加4 个Button 控件,分别用来执行设置端口号、发送聊天信息、清空聊天信息和关闭应 用程序操作。 (3)程序主要代码如下。 Frm_Main 窗体的后台代码中,首先创建程序所需要的.NET 对象及公共变量,代码如下: #region 定义全局对象及变量 private IPEndPoint Server; //服务器端 private IPEndPoint Client; //客户端 private Socket mySocket; //套接字 private EndPoint ClientIP; //IP地址 byte[] buffer, data; //接收缓存 bool blFlag = true; //标识是否第一次发送信息 bool ISPort = false; //判断端口打开 int SendNum1, ReceiveNum1, DisNum1; //记录窗体加载时的已发送\已接收\丢失的数据报 int SendNum2, ReceiveNum2, DisNum2; //记录当前已发送\已接收\丢失的数据报 int SendNum3, ReceiveNum3, DisNum3; //缓存已发送\已接收\丢失的数据报 int port; //端口号 #endregion Frm_Main 窗体加载时,初始化已发送、已接收和丢失的数据报,并使用全局变量记录,实现代码如下: //初始化已发送、已接收和丢失的数据报 private void Form1_Load(object sender, EventArgs e) { if (blFlag == true) { IPGlobalProperties NetInfo = IPGlobalProperties.GetIPGlobalProperties(); //创建一个IPGlobalProperties 对象 UdpStatistics myUdpStat = null; //声明UdpStatistics 对象 myUdpStat = NetInfo.GetUdpIPv4Statistics(); //创建UdpStatistics 对象 第19章 加密与解密技术 837 SendNum1 = Int32.Parse(myUdpStat.DatagramsSent.ToString()); //记录发送的数据报 ReceiveNum1 = Int32.Parse(myUdpStat.DatagramsReceived.ToString()); //记录接收的数据报 DisNum1 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString()); //记录丢失的数据报 } } 单击“设置”按钮,使用指定的端口号连接服务器端与客户端,并开始接收消息。“设置”按钮的Click 事件的代码如下: private void button4_Click(object sender, EventArgs e) //设置端口号 { try { port = Convert.ToInt32(textBox4.Text); //记录端口号 CheckForIllegalCrossThreadCalls = false; //指定线程中可以调用窗体的控件对象 buffer = new byte[1024]; data = new byte[1024]; Server = new IPEndPoint(IPAddress.Any, port); //创建服务器端 Client = new IPEndPoint(IPAddress.Broadcast, port); //创建客户端 ClientIP = (EndPoint)Server; //获取服务器端IP 地址 //创建Socket 对象 mySocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); //设置Socket 网络操作 mySocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.Broadcast, 1); mySocket.Bind(Server); //绑定服务器端 //开始接收消息 mySocket.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref ClientIP, new AsyncCallback(StartLister), null); ISPort = true; //打开指定端口号 } catch { } } 单击“发送”按钮,首先判断是否有打开的端口,如果没有,弹出提示信息,否则根据发送和接收的消息 计算已发送、已接收和丢失的数据报,并显示在相应的文本框中,然后使用DES对要发送的消息进行加密发送。 “发送”按钮的Click事件的代码如下: //发送信息 private void button2_Click(object sender, EventArgs e) { if (ISPort == true) //判断是否有打开的端口号 { IPGlobalProperties NetInfo = IPGlobalProperties.GetIPGlobalProperties(); UdpStatistics myUdpStat = null; myUdpStat = NetInfo.GetUdpIPv4Statistics(); try { if (blFlag == false) //非第一次发送 { SendNum2 = Int32.Parse(myUdpStat.DatagramsSent.ToString()); ReceiveNum2 = Int32.Parse(myUdpStat.DatagramsReceived.ToString()); DisNum2 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString()); textBox1.Text = Convert.ToString(SendNum2 - SendNum3); textBox2.Text = Convert.ToString(ReceiveNum2 - ReceiveNum3); textBox3.Text = Convert.ToString(DisNum2 - DisNum3); } SendNum2 = Int32.Parse(myUdpStat.DatagramsSent.ToString()); ReceiveNum2 = Int32.Parse(myUdpStat.DatagramsReceived.ToString()); DisNum2 = Int32.Parse(myUdpStat.IncomingDatagramsDiscarded.ToString()); SendNum3 = SendNum2; //记录本次的发送数据报 ReceiveNum3 = ReceiveNum2; //记录本次的接收数据报 DisNum3 = DisNum2; //记录本次的丢失数据报 if (blFlag == true) //第一次发送 { textBox1.Text = Convert.ToString(SendNum2 - SendNum1); textBox2.Text = Convert.ToString(ReceiveNum2 - ReceiveNum1); textBox3.Text = Convert.ToString(DisNum2 - DisNum1); blFlag = false; C#开发实战1200 例(第II卷) 838 } } catch (Exception ex) { MessageBox.Show(ex.Message, "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information); } string str = EncryptDES(rtbSend.Text, "mrsoftxk"); //加密要发送的信息 data = Encoding.Unicode.GetBytes(str); mySocket.SendTo(data, data.Length, SocketFlags.None, Client); //发送消息 rtbSend.Text = ""; } else { MessageBox.Show("请首先打开端口!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); button4.Focus(); } } 上面的代码中用到了EncryptDES 方法,该方法为自定义的、返回值类型为string 的方法,主要用来使用 DES 加密数据报,它有两个string 类型的参数,分别用来表示待加密的字符串和加密密钥,返回值为加密后的 字符串。EncryptDES 方法的实现代码如下: #region DES 加密字符串 /// ///DES 加密字符串 /// ///待加密的字符串 ///加密密钥,要求为8 位 ///加密成功返回加密后的字符串,失败返回源字符串 public string EncryptDES(string str, string key) { try { byte[] rgbKey = Encoding.UTF8.GetBytes(key.Substring(0, 8)); //将加密密钥转换为字节数组 byte[] rgbIV = Keys; //记录原始密钥数组 byte[] inputByteArray = Encoding.UTF8.GetBytes(str); //将加密字符串转换为字节数组 DESCryptoServiceProvider myDES = new DESCryptoServiceProvider(); //创建加密对象 MemoryStream MStream = new MemoryStream(); //创建内存数据流 //创建加密流对象 CryptoStream CStream = new CryptoStream(MStream, myDES.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write); CStream.Write(inputByteArray, 0, inputByteArray.Length); //向加密流中写入数据 CStream.FlushFinalBlock(); //释放加密流对象 return Convert.ToBase64String(MStream.ToArray()); //返回内存流中的数据 } catch { return str; } } #endregion 秘 笈心法 心法领悟575:如何根据标点符号分行? 根据标点符号分行时,首先要使用string 类的Split 方法分割字符串,然后再通过“\n”回车换行符将分割 的字符串换行显示。根据标点符号分行的代码如下: string oldstr = textBox1.Text.Trim(); string[] newstr = oldstr.Split('。'); for (int i = 0; i < newstr.Length; i++) { if (richTextBox1.Text == "") richTextBox1.Text = newstr[i].ToString(); else richTextBox1.Text += "\n" + newstr[i].ToString(); } 第19章 加密与解密技术 839 实例576 使用one-time pad算法加密数据 光盘位置:光盘\MR\19\576 高级 趣味指数: 实 例说明 在密码学里,有一种理想的加密方案,叫做一次一密乱码本,即 one-time pad 算法,该算法是最安全的加密算法,双方一旦安全交换 了密钥,之后交换信息的过程就可以保证绝对安全。本实例使用C# 实现了one-time pad 加密算法,实例运行效果如图19.6 所示。  注意:程序中使用one-time pad 算法时,一定要保证密钥和密文 的长度是一样的。 关 键技术 本实例在实现one-time pad 加密算法时,主要用到了Encoding 类的GetBytes 方法和GetString 方法,下面 分别对它们进行详细介绍。 (1)Encoding 类的GetBytes方法 Encoding 类表示字符编码,其GetBytes方法主要用来将一组字符编码为一个字节序列,该方法为可重载方 法,本实例中用到的它的重载形式如下: public virtual byte[] GetBytes(string s) 参数说明  s:字符串。  返回值:一个字节数组,包含对指定的字符集进行编码的结果。  说明:Encoding 类位于System.Text 命名空间下。 (2)Encoding 类的GetString方法 Encoding 类的GetString方法主要用来将一个字节序列解码为一个字符串,该方法为可重载方法,本实例中 用到的它的重载形式如下: public virtual string GetString(byte[] bytes) 参数说明  bytes:包含要解码的字节序列的字节数组。  返回值:包含指定字节序列解码结果的字符串。 设 计过程 (1) 打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为OneTimePadArithmetic。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加4 个TextBox 控件,分别用来输入 要加密的数据和密钥,以及显示加密后的数据和解密后的数据;添加两个Button控件,分别用来实现使用one-time pad 算法加密数据和解密数据的功能。 (3)程序主要代码如下。 在Frm_Main 窗体中输入要加密的数据和密钥后,单击“加密”按钮,使用one-time pad 算法对输入的数据 进行加密,实现代码如下: private void button1_Click(object sender, EventArgs e) { textBox2.Text = ""; //清空文本框 Encoding encoding = Encoding.Default; //获取字符编码 byte[] btData = encoding.GetBytes(textBox1.Text); //将要加密的数据转换为字节数组 byte[] btKey = encoding.GetBytes(textBox4.Text); //将密钥转换为字节数组 图19.6 使用one-time pad 算法加密数据 C#开发实战1200 例(第II卷) 840 if (btData.Length == btKey.Length) //判断长度是否相等 { byte[] btEncrypt = Encrypt(btData, btKey); //加密数据 for (int i = 0; i < btEncrypt.Length; i++) //遍历加密后的字节数组 { textBox2.Text += btEncrypt[i]; //显示在文本框中 } } } 上面的代码中用到了Encrypt 方法,该方法为自定义的、返回值类型为byte[]的方法,主要用来对指定的数 据使用one-time pad 算法进行加密。Encrypt方法的实现代码如下: public static byte[] Encrypt(byte[] btData, byte[] btKey) { if (btKey.Length != btData.Length) //判断长度是否相等 { MessageBox.Show("请确保要加密数据的长度与密钥的长度一致!"); } byte[] btResult = new byte[btData.Length]; //声明一个字节数组,用来存储加密数据 for (int i = 0; i < btResult.Length; ++i) //遍历字节数组 { btResult[i] = (byte)(btKey[i] ^ btData[i]); //为字节数组赋值 } return btResult; //返回得到的加密数据 } 单击“解密”按钮,调用Encrypt 方法对加密过的数据进行逆向加密,并返回一个byte[]数组,然后使用 Encoding 类的GetString方法从该数组中获取解密字符串。“解密”按钮的Click事件的代码如下: private void button2_Click(object sender, EventArgs e) { Encoding encoding = Encoding.Default; //获取字符编码 byte[] btData = encoding.GetBytes(textBox1.Text); //将要加密的数据转换为字节数组 byte[] btKey = encoding.GetBytes(textBox4.Text); //将密钥转换为字节数组 if (btData.Length == btKey.Length) //判断长度是否相等 { byte[] btDecrypt = Encrypt(Encrypt(btData, btKey), btKey); //解密数据 textBox3.Text = encoding.GetString(btDecrypt); //将解密后的字节数组转换为字符串并显示 } } 秘 笈心法 心法领悟576:如何在字符串中添加多个空格? 开发程序时,有时会根据需要在字符串中添加一些空格,这时可以使用string 类的Insert方法,该方法可以 在字符串中的指定位置插入一个新的字符串(包括空格)。在字符串中添加空格的代码如下: textBox3.Text = textBox1.Text.Insert(Convert.ToInt32(textBox2.Text.Trim()), " "); 实例577 使用伪随机数加密技术加密用户登录密码 光盘位置:光盘\MR\19\577 高级 趣味指数: 实 例说明 为了保障用户登录密码的安全,本实例使用伪随机数技术对用 户的登录密码进行加密,运行本实例,当用户在“登录密码”文本 框中输入登录密码时,程序会自动将使用过伪随机数加密技术加密 过的登录密码显示在下面的“加密密码”文本框中,单击“登录” 按钮,程序对“加密密码”文本框中的加密数据进行解密,然后再 与用户输入的登录密码相比较,如果相同,则登录成功;否则,登 录失败。实例运行效果如图19.7 所示。 图19.7 使用伪随机数加密技术 加密用户登录密码 第19章 加密与解密技术 841 关 键技术 本实例对用户登录密码加密时用到伪随机数加密技术,伪随机数加密技术实质上就是通过伪随机数序列使 登录密码字符串的字节值发生变化而产生密文,由于相同的初值能得到相同的随机数序列,因此,可以采用同 样的伪随机数序列来对密文进行解密。产生伪随机数时主要用到Random 类,该类表示伪随机数生成器,它是 一种能够产生满足某些随机性统计要求的数字序列的设备,其Next方法用来返回随机数,语法格式如下: public virtual int Next(int maxValue) 参数说明  maxValue:要生成随机数的上界(随机数不能取该上界值),maxValue 必须大于等于零。  返回值:大于等于零且小于maxValue 的32 位带符号整数,即返回值的范围通常包括零但不包括 maxValue;不过,如果maxValue 等于零,则返回maxValue。 设 计过程 (1)打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为PRanDataEncrypt。 (2)更改默认窗体Form1 的Name属性为Frm_Main,在该窗体中添加3 个TextBox 控件,分别用来输入 登录用户、登录密码和显示加密密码;添加两个Button 控件,分别用来执行用户登录和清空文本框操作。 (3)程序主要代码如下。 Frm_Main 窗体的后台代码中,首先定义加密用户密码所用的伪随机数,代码如下: //定义加密用户密码所用的伪随机数 private string randStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"; 当在“登录密码”文本框中输入登录密码时,实时将使用伪随机数加密过的登录密码显示在“加密密码” 文本框中,实现代码如下: private void textBox2_TextChanged(object sender, EventArgs e) { textBox3.Text = EncryptPwd(textBox2.Text); //显示加密后的用户登录密码 } 上面的代码中用到EncryptPwd 方法,该方法为自定义的、返回值类型为string 的方法,主要用来使用伪随 机数技术加密用户登录密码,它有一个参数,用来表示用户登录密码。EncryptPwd 方法的实现代码如下: /// /// 使用伪随机数加密用户登录密码 /// /// 用户登录密码 /// 加密后的用户登录密码 private string EncryptPwd(string str) { byte[] btData = Encoding.Default.GetBytes(str); //将登录密码转换为字节数组 int j, k, m; int len = randStr.Length; //记录伪随机数长度 StringBuilder sb = new StringBuilder(); //创建StringBuilder对象 Random rand = new Random(); //创建Random 对象 for (int i = 0; i < btData.Length; i++) { j = (byte)rand.Next(6); //产生伪随机数 btData[i] = (byte)((int)btData[i] ^ j); //使用伪随机数对密码字节数组进行移位 k = (int)btData[i] % len; m = (int)btData[i] / len; m = m * 8 + j; sb.Append(randStr.Substring(k, 1) + randStr.Substring(m, 1)); //组合加密字符串 } return sb.ToString(); //返回生成的加密字符串 } 单击“登录”按钮,判断“加密密码”文本框是否为空。如果不为空,调用DecryptPwd 方法解密“加密 密码”文本框中的字符串;然后使用解密后的字符串与“登录密码”文本框中的字符串相比较,如果相同,则 用户登录成功;否则,弹出提示信息。“登录”按钮的Click事件代码如下: C#开发实战1200 例(第II卷) 842 private void button1_Click(object sender, EventArgs e) { if (textBox3.Text != "") { if (DecryptPwd(textBox3.Text) == textBox2.Text) //对加密过的登录密码进行解密 MessageBox.Show("用户登录成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); else MessageBox.Show("用户密码错误!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); } } 上面的代码中用到了DecryptPwd 方法,该方法为自定义的、返回值类型为string 的方法,主要用来解密用 户登录密码,它有一个参数,主要用来表示经过加密的用户登录密码。DecryptPwd 方法的实现代码如下: /// /// 解密用户登录密码 /// /// 经过加密的用户登录密码 /// 解密后的用户登录密码 private string DecryptPwd(string str) { try { int j, k, m, n = 0; int len = randStr.Length; //获取伪随机数长度 byte[] btData = new byte[str.Length / 2]; //定义一个字节数组,并指定长度 for (int i = 0; i < str.Length; i += 2) //对登录密码进行解密 { k = randStr.IndexOf(str[i]); m = randStr.IndexOf(str[i + 1]); j = m / 8; m = m - j * 8; btData[n] = (byte)(j * len + k); btData[n] = (byte)((int)btData[n] ^ m); n++; } return Encoding.Default.GetString(btData); //返回解密后的登录密码 } catch { return ""; } } 秘 笈心法 心法领悟577:如何将字符串颠倒输出? 颠倒输出字符串时,可以先将要输出的字符串保存到一个char 类型的数组中,然后使用Array 类的Reverse 方法。将字符串颠倒输出的代码如下: string str1 = textBox1.Text.Trim(); char[] charstr = str1.ToCharArray(); Array.Reverse(charstr); string str2 = new string(charstr); textBox2.Text = str2; 实例578 以XML格式导入导出密钥 光盘位置:光盘\MR\19\578 高级 趣味指数: 实 例说明 本实例主要实现以XML 格式导入导出密钥,从而实现对数据进行加密和解密的功能。运行本实例,首先 在窗体中显示生成的公钥和私钥,然后输入明文数据,单击“加密”按钮,对输入的明文数据进行加密;单击 “解密”按钮,对加密后的数据进行解密。实例运行效果如图19.8 所示。 第19章 加密与解密技术 843 图19.8 以XML 格式导入导出密钥 关 键技术 本实例实现时主要用到了RSACryptoServiceProvider 类的ToXmlString方法、Encrypt 方法和Decrypt 方法, 下面对本实例中用到的关键技术进行详细讲解。 (1)RSACryptoServiceProvider 类的ToXmlString方法 RSACryptoServiceProvider 类用来使用加密服务提供程序(CSP)提供的RSA 算法的实现执行不对称加密和 解密,其ToXmlString 方法主要用来创建并返回包含当前RSA 对象的密钥的XML 字符串,该方法的语法格式 如下: public override string ToXmlString(bool includePrivateParameters) 参数说明  includePrivateParameters:true 表示同时包含RSA公钥和私钥,false 表示仅包含公钥。  返回值:包含当前RSA对象的密钥的XML字符串。  说明:RSACryptoServiceProvider 类位于System.Security.Cryptography 命名空间下。 (2)RSACryptoServiceProvider 类的Encrypt方法 该方法主要使用RSA算法对数据进行加密,其语法格式如下: public byte[] Encrypt(byte[] rgb,bool fOAEP) 参数说明  rgb:要加密的数据。  fOAEP:如果为true,则使用OAEP 填充(仅在运行Microsoft Windows XP 或更高版本的计算机上可用) 执行直接的RSA 加密;如果为false,则使用PKCS#1 1.5 版填充。  返回值:字节数组,表示已加密的数据。 (3)RSACryptoServiceProvider 类的Decrypt方法 该方法主要使用RSA算法对数据进行解密,其语法格式如下: public byte[] Decrypt(byte[] rgb,bool fOAEP) 参数说明  rgb:要解密的数据。  fOAEP:如果为true,则使用OAEP 填充(仅在运行Microsoft Windows XP 或更高版本的计算机上可用) 执行直接的RSA 解密;如果为false,则使用PKCS#1 1.5 版填充。  返回值:字节数组,表示已解密的数据,它是加密前的原始纯文本。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为KeyToXML。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加5 个TextBox 控件,分别用来显示 C#开发实战1200 例(第II卷) 844 公钥、显示私钥、输入明文数据、显示加密后的数据和显示解密后的数据;添加两个Button 控件,分别用来执 行数据加密和解密操作。 (3)程序主要代码如下。 在Frm_Main 窗体的后台代码中,首先创建RSACryptoServiceProvider 对象,并且定义一个字节数组,用来 存储临时数据,代码如下: RSACryptoServiceProvider RSACrypto = new RSACryptoServiceProvider(); //创建RSA 算法加密解密对象 byte[] M_bt_Data; //定义一个字节数组,用来存储临时数据 Frm_Main 窗体加载时,在文本框中显示程序自动生成的公钥和私钥数据,代码如下: private void Frm_Main_Load(object sender, EventArgs e) { this.textBox1.Text = RSACrypto.ToXmlString(true); //显示生成的公钥 this.textBox2.Text = RSACrypto.ToXmlString(false); //显示生成的私钥 } 当用户输入明文数据之后,单击“加密”按钮,调用RSACryptoServiceProvider 类的Encrypt方法对数据进 行加密,并且使用Encoding 类的UTF8 编码方式的GetString 方法得到加密后的数据,显示在文本框中。“加密” 按钮的Click事件代码如下: private void button1_Click(object sender, EventArgs e) { if (textBox3.Text != "") //判断是否输入了要加密的数据 { byte[] P_bt_Encrypt = Encoding.UTF8.GetBytes(textBox3.Text); //将要加密的数据转换为字节数组 M_bt_Data = RSACrypto.Encrypt(P_bt_Encrypt, false); //加密数据 textBox4.Text = Encoding.UTF8.GetString(M_bt_Data); //显示加密数据 } } 单击“解密”按钮,调用RSACryptoServiceProvider 类的Decrypt方法对加密过的数据进行解密,并且使用 Encoding 类的UTF8 编码方式的GetString 方法得到解密后的数据,显示在文本框中。“解密”按钮的Click 事 件代码如下: private void button2_Click(object sender, EventArgs e) { if (textBox4.Text != "") //判断是否有加密过的数据 { byte[] P_bt_Decrypt = RSACrypto.Decrypt(M_bt_Data, false); //对数据进行解密 textBox5.Text = Encoding.UTF8.GetString(P_bt_Decrypt); //显示解密数据 } } 秘 笈心法 心法领悟578:如何判断字符串是否为日期格式? 判断字符串是否为日期格式时,可以使用正则表达式。验证日期格式的正则表达式主要有以下3 种: \b(?\d{2,4})/(?\d{1,2})/(?\d{1,2})\b 或 \b(?\d{2,4})-(?\d{1,2})-(?\d{1,2})\b 或 \b(?\d{2,4})年(?\d{1,2})月(?\d{1,2})日\b 实例579 以参数格式导入导出密钥 光盘位置:光盘\MR\19\579 高级 趣味指数: 实 例说明 本实例主要实现以参数格式导入导出密钥,从而实现对数据进行加密和解密的功能。运行本实例,在窗体 第19章 加密与解密技术 845 中输入明文数据,单击“加密”按钮,对输入的明文数据进行加密;单击“解 密”按钮,对加密后的数据进行解密。实例运行效果如图19.9 所示。 关 键技术 本实例实现时主要用到了RSACryptoServiceProvider 类的ExportParameters 方法、ImportParameters 方法、Encrypt 方法和Decrypt 方法,下面对本实例 中用到的关键技术进行详细讲解。 (1)RSACryptoServiceProvider 类的ExportParameters 方法 该方法主要用来导出RSAParameters标准参数,其语法格式如下: public override RSAParameters ExportParameters(bool includePrivateParameters) 参数说明  includePrivateParameters:如果要包括私有参数,则为true;否则为false。  返回值:RSA 算法的标准参数。 (2)RSACryptoServiceProvider 类的ImportParameters 方法 该方法主要用来导入指定的RSAParameters标准参数,其语法格式如下: public override void ImportParameters(RSAParameters parameters) 参数说明 parameters:RSA 算法的标准参数。  说明:关于RSACryptoServiceProvider 类的Encrypt 方法和Decrypt 方法的详细讲解,请参见实例578 中的 关键技术。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为KeyToParameter。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加3 个TextBox 控件,分别用来输入 明文数据、显示加密后的数据和解密后的数据;添加两个Button 控件,分别用来执行数据加密和解密操作。 (3)程序主要代码如下。 Frm_Main 窗体的后台代码中,首先创建RSACryptoServiceProvider 对象和RSAParameters 标准参数对象, 并且定义一个字节数组,用来存储临时数据,代码如下: RSACryptoServiceProvider RSACrypto; //声明RSA 算法加密解密对象 RSAParameters RSAParame; //声明RSAParameters 参数对象 byte[] M_bt_Data; //定义一个字节数组,用来存储临时数据 在Frm_Main 窗体的构造函数中,调用RSACryptoServiceProvider 类的ImportParameters 方法导入 RSAParameters标准参数,实现代码如下: public Frm_Main() { InitializeComponent(); RSACrypto = new RSACryptoServiceProvider(); //初始化RSA 算法加密解密对象 RSAParame = RSACrypto.ExportParameters(true); //初始化RSAParameters 参数 RSACrypto.Clear(); //清空RSACryptoServiceProvider 对象 RSACrypto = new RSACryptoServiceProvider(); //初始化RSA 算法加密解密对象 RSACrypto.ImportParameters(RSAParame); //导入密钥 } 当用户输入明文数据之后,单击“加密”按钮,调用RSACryptoServiceProvider 类的Encrypt方法对数据进 行加密,并且使用Encoding 类的UTF8 编码方式的GetString 方法得到加密后的数据,显示在文本框中。“加密” 按钮的Click事件代码如下: private void button1_Click(object sender, EventArgs e) { if (textBox1.Text != "") //判断是否输入了要加密的数据 { 图19.9 以参数格式导入导出密钥 C#开发实战1200 例(第II卷) 846 byte[] P_bt_Encrypt = Encoding.UTF8.GetBytes(textBox1.Text); //将要加密的数据转换为字节数组 M_bt_Data = RSACrypto.Encrypt(P_bt_Encrypt, false); //加密数据 textBox2.Text = Encoding.UTF8.GetString(M_bt_Data); //显示加密数据 } } 单击“解密”按钮,调用RSACryptoServiceProvider 类的Decrypt方法对加密过的数据进行解密,并且使用 Encoding 类的UTF8 编码方式的GetString 方法得到解密后的数据,显示在文本框中。“解密”按钮的Click 事 件代码如下: private void button2_Click(object sender, EventArgs e) { if (textBox2.Text != "") //判断是否有加密过的数据 { byte[] P_bt_Decrypt = RSACrypto.Decrypt(M_bt_Data, false); //对数据进行解密 textBox3.Text = Encoding.UTF8.GetString(P_bt_Decrypt); //显示解密数据 } } 秘 笈心法 心法领悟579:巧截字符串中的数字。 截取字符串中的数字时,可以先使用CharEnumerator 对象的MoveNext 方法循环访问字符串中的每个字符, 并将字符用System.Text.Encoding 类中ASCII 编码方式的GetBytes 方法进行编码,然后判断经过编码之后的字符 的ASCII码值是否介于48和57之间,如果是,则将其显示在textBox文本框中。截取字符串中数字的代码如下: CharEnumerator CEnumerator = textBox1.Text.GetEnumerator(); while (CEnumerator.MoveNext()) { byte[] array = new byte[1]; array = System.Text.Encoding.ASCII.GetBytes(CEnumerator.Current.ToString()); int asciicode = (short)(array[0]); if (asciicode >= 48 && asciicode <= 57) { textBox2.Text += CEnumerator.Current.ToString(); } } 19.2 文件的加密与解密 实例580 文本文件加密与解密 光盘位置:光盘\MR\19\580 高级 趣味指数: 实 例说明 在本实例的窗体中,首先选择要加密或解密的文本文件,然后单击“加 密”或“解密”按钮对文本文件进行加密或解密。实例运行效果如图19.10 所示。 关 键技术 本实例实现时主要用到了System.Security.Cryptography命名空间下的 RijndaelManaged 类的CreateDecryptor 方法、CreateEncryptor 方法和CryptoStream 类的Write 方法,下面对本实 例中用到的关键技术进行详细讲解。 (1)RijndaelManaged 类 该类是访问System.Security.Cryptography.Rijndael 对称加密算法的托管版本,其语法格式如下: public sealed class RijndaelManaged : Rijndael 图19.10 文本文件加密与解密 第19章 加密与解密技术 847  注意:此算法支持128、192或256 位的密钥长度。 (2)CreateDecryptor 方法 该方法位于RijndaelManaged 类中,使用指定的Key和初始化向量(IV)创建对称的Rijndael 解密器对象, 其语法格式如下: public override IcryptoTransform CreateDecryptor (byte[] rgbKey,byte[] rgbIV) 参数说明  rgbKey:用于对称算法的机密密钥。  rgbIV:用于对称算法的IV。  返回值:对称的Rijndael 解密器对象。 (3)CreateEncryptor 方法 该方法位于RijndaelManaged 类中,使用指定的Key和初始化向量(IV)创建对称的Rijndael 加密器对象, 其语法格式如下: public override ICryptoTransform CreateEncryptor (byte[] rgbKey,byte[] rgbIV) 参数说明  rgbKey:用于对称算法的机密密钥。  rgbIV:用于对称算法的IV。  返回值:对称的Rijndael 加密器对象。  说明:关于CryptoStream 类的Write 方法的详细讲解,请参见实例575中的关键技术。 设 计过程 (1) 打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为EncryptTextFileOne。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加一个TextBox 控件,用来显示文本 文件路径;添加一个OpenFileDialog 控件,用来选择要加密或解密的文本文件;添加3 个Button 控件,用来执 行选择文本文件、加密和解密操作。 (3)程序主要代码如下。 单击“加密”按钮实现对选择的文本文件进行加密,“加密”按钮的Click事件的代码如下: private void button2_Click(object sender, EventArgs e) { if (textBox1.Text == "") //若未选择要加密的文本文件 { MessageBox.Show("请选择要加密的文件"); } //如果没有选择则弹出提示 else { try{ string strPath = textBox1.Text; //加密文件的路径 int intLent=strPath.LastIndexOf("\\")+1; //设置截取的起始位置 int intLong = strPath.Length; //设置截取的长度 string strName = strPath.Substring(intLent,intLong-intLent); //要加密的文件名称 int intTxt = strName.LastIndexOf("."); //设置截取的起始位置 int intTextLeng = strName.Length; //设置截取的长度 string strTxt = strName.Substring(intTxt,intTextLeng-intTxt); //取出文件的扩展名 strName = strName.Substring(0,intTxt); //加密后的文件名及路径 string strOutName = strPath.Substring(0, strPath.LastIndexOf("\\") + 1) + strName + "Out" + strTxt; //加密文件密钥 byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29, 9, 2, 49, 69, 73, 92 }; byte[] IV ={ 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 }; RijndaelManaged myRijndael = new RijndaelManaged(); FileStream fsOut = File.Open(strOutName, FileMode.Create, FileAccess.Write); FileStream fsIn = File.Open(strPath, FileMode.Open, FileAccess.Read); //写入加密文本文件 CryptoStream csDecrypt = new CryptoStream(fsOut, myRijndael.CreateEncryptor(key, IV), CryptoStreamMode.Write); BinaryReader br = new BinaryReader(fsIn); //创建阅读器来读加密文本 csDecrypt.Write(br.ReadBytes((int)fsIn.Length), 0, (int)fsIn.Length); //将数据写入加密文本 C#开发实战1200 例(第II卷) 848 csDecrypt.FlushFinalBlock(); csDecrypt.Close(); //关闭CryptoStream 对象 fsIn.Close(); //关闭FileStream 对象 fsOut.Close(); //关闭FileStream 对象 if (MessageBox.Show("加密成功!加密后的文件名及路径为:\n" + strOutName + ",是否删除源文件", "信息提示", MessageBoxButtons. YesNo) == DialogResult.Yes) { File.Delete(strPath); //删除指定文件 textBox1.Text = ""; //清空文本框 }else { textBox1.Text = ""; } } catch (Exception ee) //如果出现异常 { MessageBox.Show(ee.Message); //输出异常信息 } } } 单击“解密”按钮实现对加密的文本文件进行解密,“解密”按钮的Click事件代码如下: private void button3_Click(object sender, EventArgs e) { if (textBox1.Text == "") //若未选择要解密的文件 { MessageBox.Show("请选择要解密的文件路径"); //如果没有选择则弹出提示 } else { string strPath = textBox1.Text; //加密文件的路径 int intLent = strPath.LastIndexOf("\\") + 1; //设置截取字符串的起始位置 int intLong = strPath.Length; //设置截取长度 string strName = strPath.Substring(intLent, intLong - intLent); //要加密的文件名称 int intTxt = strName.LastIndexOf("."); //截取字符串的起始位置 int intTextLeng = strName.Length; //截取长度 strName = strName.Substring(0, intTxt); //获取扩展名 if (strName.LastIndexOf("Out") != -1) { strName = strName.Substring(0, strName.LastIndexOf("Out")); } else { strName = strName + "In"; } //加密后的文件名及路径 string strInName = strPath.Substring(0, strPath.LastIndexOf("\\") + 1) + strName + ".txt"; //解密文件密钥 byte[] key = { 24, 55, 102, 24, 98, 26, 67, 29, 84, 19, 37, 118, 104, 85, 121, 27, 93, 86, 24, 55, 102, 24, 98, 26, 67, 29, 9, 2, 49, 69, 73, 92 }; byte[] IV ={ 22, 56, 82, 77, 84, 31, 74, 24, 55, 102, 24, 98, 26, 67, 29, 99 }; RijndaelManaged myRijndael = new RijndaelManaged(); //创建RijndaelManaged 对象 //创建FileStream 对象 FileStream fsOut = File.Open(strPath, FileMode.Open, FileAccess.Read); CryptoStream csDecrypt = new CryptoStream(fsOut, myRijndael.CreateDecryptor(key, IV), CryptoStreamMode.Read); StreamReader sr = new StreamReader(csDecrypt); //把文件读出来 StreamWriter sw = new StreamWriter(strInName); //解密后写入一个新文件 sw.Write(sr.ReadToEnd()); sw.Flush(); sw.Close(); sr.Close(); fsOut.Close(); if (MessageBox.Show("解密成功!解密后的文件名及路径为:"+strInName+",是否删除源文件", "信息提示", MessageBoxButtons.YesNo) == DialogResult.Yes) { File.Delete(strPath); //删除指定文件 textBox1.Text = ""; //清空文本框 } else { 第19章 加密与解密技术 849 textBox1.Text = ""; } } } 秘 笈心法 心法领悟580:如何存储变长字符串? 在程序中存储变长字符串时,需要使用StringBuilder对象。相对于string 对象来说,StringBuilder 对象是可 变的,不用生成中间对象,因此,在连接的字符串较多或字符串长度较长时,通常都使用StringBuilder 对象。 实例581 利用图片加密文件 光盘位置:光盘\MR\19\581 高级 趣味指数: 实 例说明 本实例在加密时,使用指定的图片生成加密密钥,然后对文本文件进 行加密;在解密时,使用加密时的图片生成解密密钥,然后对加密的文本 文件进行解密。运行本实例,首先打开一张图片,用来生成加密或解密的 密钥,然后选择要加密或解密的文本文件,最后单击“加密”或“解密” 按钮,实现对文本文件的加密或解密。实例运行效果如图19.11 所示。 关 键技术 本实例实现时主要用到了RC2CryptoServiceProvider 类、BinaryWriter 类的Write 方法、File 类的Delete 方法和Copy 方法,下面对本实例中用到 的关键技术进行详细讲解。 (1)RC2CryptoServiceProvider 类 该类定义访问RC2算法的加密服务提供程序(CSP)实现的包装对象,无法继承此类。 (2)BinaryWriter 类 该类以二进制形式将基元类型写入流,并支持用特定的编码写入字符串,其构造器的语法格式如下: public BinaryWriter (Stream output) 参数说明 output:表示输出流。 (3)BinaryWriter 类的Write 方法 该方法将一个无符号字节写入当前流,并将流的位置提升一个字节,其语法格式如下: public virtual void Write (byte value) 参数说明 value:表示要写入的无符号字节。 (4)File 类的Delete 方法 File 类提供用于创建、复制、删除、移动和打开文件的静态方法,并协助创建FileStream 对象,该类是个 静态类,其Delete方法用于删除指定的文件,如果指定的文件不存在,则引发异常。该方法的语法格式如下: public static void Delete (string path) 参数说明 path:表示要删除的文件的名称。 (5)File 类的Copy 方法 该方法将现有文件复制到新文件,不允许改写同名的文件,其语法格式如下: public static void Copy (string sourceFileName,string destFileName) 图19.11 利用图片加密文件 C#开发实战1200 例(第II卷) 850 参数说明  sourceFileName:要复制的文件。  destFileName:目标文件的名称,不能是一个目录或现有文件。 设 计过程 (1) 打开Visual Studio 2008开发环境,新建一个Windows窗体应用程序,并将其命名为EncryptTextFileTwo。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加一个TextBox 控件,用来显示加密 或解密文件的路径;添加一个OpenFileDialog 控件,用来选择要加密或解密的文件和打开密钥的图片;添加4 个Button 控件,分别用来执行加密、解密、打开文件和打开图片操作;添加一个PictureBox 控件,用于显示密 钥图片。 (3)程序主要代码如下。 单击“加密”按钮,实现利用图片对文本文件进行加密的功能,“加密”按钮的Click 事件的代码如下: private void button3_Click(object sender, EventArgs e) { try { if (pictureBox1.ImageLocation==null) //判断是否选择了图片 { MessageBox.Show("请选择一幅图片用于加密"); return; } //如果没有选择则弹出提示 if (textBox1.Text == "") //若未选择需要加密的文件 { MessageBox.Show("请选择加密文件路径"); return; } //如果没有选择则弹出提示 //图片流 FileStream fsPic = new FileStream(pictureBox1.ImageLocation, FileMode.Open, FileAccess.Read); //加密文件流 FileStream fsText = new FileStream(textBox1.Text, FileMode.Open, FileAccess.Read); //初始化对称算法的密钥和向量 byte[] bykey = new byte[16]; //定义存储密钥的字节数组 byte[] byIv = new byte[8]; //定义存储向量的字节数组 fsPic.Read(bykey, 0, 16); //把图片流写入密钥缓冲区 fsPic.Read(byIv, 0, 8); //把图片流写入向量缓冲区 //临时加密文件 string strPath = textBox1.Text; //加密文件的路径 int intLent = strPath.LastIndexOf("\\") + 1; int intLong = strPath.Length; string strName = strPath.Substring(intLent, intLong - intLent); //要加密的文件名称 string strLinPath = "C:\\" + strName; //临时加密文件路径 FileStream fsOut = File.Open(strLinPath, FileMode.Create, FileAccess.Write); //开始加密,首先创建RC2CryptoServiceProvider 对象 RC2CryptoServiceProvider desc = new RC2CryptoServiceProvider(); BinaryReader br = new BinaryReader(fsText); //创建BinaryReader 对象 //创建CryptoStream 对象,用于写入临时加密文件 CryptoStream cs = new CryptoStream(fsOut, desc.CreateEncryptor(bykey, byIv), CryptoStreamMode.Write); cs.Write(br.ReadBytes((int)fsText.Length), 0, (int)fsText.Length); //写入加密流 cs.FlushFinalBlock(); cs.Flush(); cs.Close(); fsPic.Close(); fsText.Close(); fsOut.Close(); File.Delete(textBox1.Text.TrimEnd()); //删除原文件 File.Copy(strLinPath, textBox1.Text); //复制加密文件 File.Delete(strLinPath); //删除临时文件 MessageBox.Show("加密成功"); pictureBox1.ImageLocation = null; textBox1.Text = ""; } catch (Exception ee) { MessageBox.Show(ee.Message); } } 第19章 加密与解密技术 851 单击“解密”按钮,实现利用图片对加密的文本文件进行解密的功能,“解密”按钮的Click事件的代码如下: private void button4_Click(object sender, EventArgs e) { try { //图片流 FileStream fsPic = new FileStream(pictureBox1.ImageLocation, FileMode.Open, FileAccess.Read); //解密文件流 FileStream fsOut = File.Open(textBox1.Text, FileMode.Open, FileAccess.Read); //初始化对称算法的密钥和向量 byte[] bykey = new byte[16]; //定义存储密钥的字节数组 byte[] byIv = new byte[8]; //定义存储向量的字节数组 fsPic.Read(bykey, 0, 16); //把图片流写入密钥缓冲区 fsPic.Read(byIv, 0, 8); //把图片流写入向量缓冲区 //创建临时解密文件 string strPath = textBox1.Text; //加密文件的路径 int intLent = strPath.LastIndexOf("\\") + 1; //获取不含文件名的路径长度 int intLong = strPath.Length; //获取含文件名的路径长度 //获取要解密文件的名称,即加密文件的名称 string strName = strPath.Substring(intLent, intLong - intLent); string strLinPath = "C:\\" + strName; //临时解密文件路径 FileStream fs = new FileStream(strLinPath, FileMode.Create, FileAccess.Write); //开始解密,首先创建RC2CryptoServiceProvider 对象 RC2CryptoServiceProvider desc = new RC2CryptoServiceProvider(); //创建CryptoStream 对象,用于读取加密文件 CryptoStream csDecrypt = new CryptoStream(fsOut, desc.CreateDecryptor(bykey, byIv), CryptoStreamMode.Read); BinaryReader sr = new BinaryReader(csDecrypt); //创建BinaryReader 对象 BinaryWriter sw = new BinaryWriter(fs); //创建BinaryWriter 对象 sw.Write(sr.ReadBytes(Convert.ToInt32(fsOut.Length))); //写入解密流 sw.Flush(); sw.Close(); sr.Close(); fs.Close(); fsOut.Close(); fsPic.Close(); csDecrypt.Flush(); File.Delete(textBox1.Text.TrimEnd()); //删除原文件 File.Copy(strLinPath, textBox1.Text); //复制加密文件 File.Delete(strLinPath); //删除临时文件 MessageBox.Show("解密成功"); //弹出提示信息 pictureBox1.ImageLocation = null; //清空图片 textBox1.Text = ""; //清空文本框 } catch (Exception ee) //如果出现异常 { MessageBox.Show(ee.Message); //输出异常 } } 秘 笈心法 心法领悟581:如何去除字符串尾空格? 去除字符串尾空格需要使用string 类的Trim 方法,该方法用来从字符串的开始和末尾处移除空白字符的所 有匹配项。例如,下面的代码用来去掉textBox1 文本框中字符串的尾空格,并将结果显示在textBox2 文本框中: textBox2.Text = textBox1.Text.Trim(); 实例582 对文件进行加密保护 光盘位置:光盘\MR\19\582 高级 趣味指数: 实 例说明 随着计算机的普及,文件的安全越来越重要,本实例使用C#制作了一个对文件进行加密保护的实例。运行 C#开发实战1200 例(第II卷) 852 本实例,选择要加密或解密的文件,用程序来判断是否是加密过的文件, 如果不是,输入加密密码,单击“加密”按钮,加密已选择的文件;如果 是,输入解密密码,单击“解密”按钮,解密选择的加密文件。实例运行 效果如图19.12 所示。 关 键技术 本实例制作对文件进行加密保护程序时,首先选择要加密或解密的文 件,并输入加密或解密密码,然后启动一个新的线程,使用输入的密码对 指定的文件进行加密或解密操作。另外,如果对文件执行的是加密操作,则加密成功后删除原文件。具体实现 过程中,主要用到了DES 类的CreateEncryptor 和CreateDecryptor 方法、CryptoStream 类的构造函数及其Write 方法。  说明:关于DES 类的CreateEncryptor 方法和CreateDecryptor 方法、CryptoStream 类的构造函数及其Write 方法的详细讲解,请参见实例575中的关键技术。 设 计过程 (1)打开Visual Studio 2008 开发环境,新建一个Windows窗体应用程序,并将其命名为ProtectFile。 (2)更改默认窗体Form1 的Name 属性为Frm_Main,在该窗体中添加一个OpenFileDialog 控件,用来显 示“打开”对话框;添加两个TextBox 控件,分别用来显示选择的文件路径和输入加密、解密密码;添加3 个 Button控件,分别用来执行选择加密或解密的文件、加密文件和解密文件操作;添加一个ProgressBar控件,用 来显示加密或解密的进度。 (3)程序主要代码如下。 Frm_Main 窗体加载时,首先将加密文件
Excel集成工具箱6.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右 自定义函数,集160个工具于一身,但体积小于15MB。当安装集成工具箱后,如果您使用Excel 2003,则将产生【工具箱】菜单, 包括160多个子菜单;如果您使用Excel 2007或者2010,将产生【集成】与【工具箱】功能区。根据各功能的特点,对子菜单 作了18个分类, 而在函数向导对话框中也生成100个左右新的函数,用于扩展Excel的计算功能。且所有功能都通用于 Excel 2002、2003和2007、2010。支持中英文显示与繁简体操作系统、拥有20多款华丽的皮肤界面,支持Excel2007全面 隐藏选项卡,这个插件还模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 =================================================================================================================== 下载地址(集成工具箱本身3.60MB,解压后超过15MB,不含帮助文件): 网盘下载:http://www.brsbox.com/jackeyliang(含帮助,解压超过40MB) 多特软件站下载: http://www.duote.com/soft/1495.html EXCEL集成工具箱V7.0完整版.rar (19.42MB) 绿色软件站下载: http://soft.syue.com/soft/98/99/2010/2010081491963.html EXCEL集成工具箱V7.0完整版.rar 软件屋下载: http://soft.softhouse.com.cn/software/show/76357.html EXCEL集成工具箱V7.0完整版.rar 大观软件站下载: http://guansky.com/soft/html/15828.html EXCEL集成工具箱V7.0完整版.rar IT资讯平台下载: http://download.it168.com/547/1483/index.shtml EXCEL集成工具箱V7.0完整版.rar =================================================================================================================== 本工具箱160个菜单工具的功能介绍如下: 分类 功能名称 功能介绍 繁简转换 【简体转繁体】 将选中区域存储格的简体字批量转换成繁体。 【繁体转简体】 将选中区域存储格的繁体字批量转换成简体。 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体字(GB2)批量转换成繁体操作系统的繁体(BIG5)。 【BIG5转GB2】 将选中区域存储格的繁体字(BIG5)批量转换成简体操作系统的简体(GB2)。 完 美 背 景 着 色 【选区背景】 默认启动智能着色方式,此功能会清除一部分背景颜色,但对工作表中的条件格式会作完全保留,丝毫没有影响。最大的特点是支持屏幕行列捲轴的操作而不影响显示。 【选区背景选择】 进行着色功能切换,支持行着色、列着色、行与列同时着色、智能着色、选区着色、反向着色共6种方式供选择,可以自定义56种基本及颜色板任意着色颜色。 【条件背景】 默认启动智能着色方式,此功能不会清除背景颜色,但会对工作表中的条件格式作自动清除。最大的特点是支持屏幕行列捲轴的操作而不影响显示。 【条件背景选择】 进行着色功能切换,支持行着色、列着色、行与列同时着色、智能着色、选区着色、反向着色共6种方式供选择,可以自定义56种基本及颜色板任意着色颜色。 【高级背景】 将选择的行进行颜色标示,以突出当前行,有利于数据查看。可以随心所欲地定义颜色,还可以自由调整颜色的深浅。本工具相对于同类工具有不破坏背景色、条件格式、复制粘贴和撤消功能之优点。 【高级背景选择】 背景着色的高级功能,支持行着色、列着色、行与列同时着色共3种方式供选择。 快捷取数 【快捷取数列】 随存储格即时移动的快捷数据清单,可取任意区域的数据为唯一值清单,提高数据录入效率。最重要的是清单的最后6项为子程序功能,点击则可以完成增加清单显示宽度,选中或反选所有清单、写清单到任意存储格、重新加载数据等操作。也可以重新加载另外一区域或某几列的数据,也可以重新设定功能的生效存储格范围。 【快捷取日期】 随存储格即时移动的快捷日期数据清单,且有已录入日期的记忆功能。所有快捷取数工具都具有使用30秒钟则自动隐藏功能,用户可以决定是否取消其自动隐藏清单。 【快捷综合取数】 功能较功能更强大,支持同时取6个不同存储格区域(或列)为6个唯一值清单,并在指定的6个不同的生效范围自适应地显示对应的清单。清单的最后6项也为子程序功能,能完成相关操作。且支持重新加载数据及重设定生效存储格范围。 财 务 工 具 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee原始数据。极力推荐的工具之一。 【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供选择,支持图片背景批注与批量写批注。最大的优点是将指定的任意区域按每个存储格内容为一行加入到当前批注中,允许批注内容中是否显示行号。 【连接字符串】 可视化地窗体连接字符串功能。能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能动态地显示运行过程,支持程序运行后中途暂停。 【恢复工资条】 能将已生成工资条的工资明细表,快速地还原为初始状态,支持多种参数设定。 【生成数据列】 生成发票号码序列的得力助手,可以生成任意的奇偶数列,差值或倍值或者递增、递减的任意有理数数据序列,支持先行后列与先列后行两种方式,支持瞬时恢复清除。 【取RMB张数】 根据员工的工资计算需要多少张100元、50元......1元的钞票,可以批量累计计算。发现金工资的财务工作者的必备工具之一。 【数字转英文】 将选中区域(默认)或已使用区域存储格的金额数字转换成英文格式显示的表达字符串,为三资企业制作客户外汇付款通知书的理想工具。 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递数据的便利工具之一。并提供两种方式的转换。 成本核算 【取唯一值】 还在使用或功能对数据进行唯一值的繁锁操作吗? 本工具可快捷方便地取任意选中区域的存储格内容为唯一值清单,快捷且高效。 【取产品型号】 功能较在字符串中取数字强大多倍。能批量取某列存储格按指定长度的数字并允许特定数字串的获取,例如M76000,RC76000等。而小于指定长度的数字串则不予获取。 【快速选定数据】 可瞬间选中与用户指定内容相同的当前工作表中所有存储格,方便选定、清除内容或其他操作,支持选中字体彩色是否着色。 【取型号使用范围】 取MATCH的两列数据(Relating Area)中对应MODEL的使用范围(Where Used)。 常 用 工 具 【繁简转换】 可视化的繁简体GB与BGK码以及GB2与BIG5码相互转换,可以复制文本到当前窗体中文本进行转换,也可以实现单个文件或批量文件的转换。在窗体中双击文本字符串尾即可实现自动选定文本并自动复制功能。本工具较同类转换工具准确率达100%。 【背景颜色】 提供可视化的可选择着色方式的背景着色功能,默认启用智能着色。 【文件批量改名】 功能完善的文件或图片批量改名工具。细分为多方式改名,优点明显。例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用指定密码进行锁定与解锁操作。 【工作表隐藏】 对当前工作薄中的各工作表批量一次性进行隐藏与取消隐藏操作。 【新建工作表】 批量新建或者复制工作表,依指定存储格内容可以瞬间建立/复制1到255个。还可以在新建或复制时全自动命名。分为自动新增方式与依指定存储格内容两种方式。 【插入批注背景】 可以选定任意一幅图片为批注背景来插入一个带图片背景的批注。可视化窗体操作,可随时更换批注样式,也支持批量多存储格样式修改。 【插入行数】 对工作表隔行插入行并可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成多个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 【查找与替换】 增强型EXCEL内置查找与替换功能。可以按设置搜索任何字符串(包括*或?符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为。其中功能窗体显示区(NoTaskbar)功能可设置本工具启用的窗体图标是否在状态栏显示,并允许切换功能。 扩 展 工 具 【屏幕截图】 可以截取屏幕任意一区域并复制或另存为图片,可随意更改大小,操作灵活性特强。 【屏幕取色】 经典的屏幕取色工具,可取任意一处屏幕颜色到指定的存储格中,可显示为RGB颜色值或十六进制的颜色值,为VBA开发人员的辅助工具之一。 【万年日历】 可以查询所有节、假日信息和公农双历,以及计算两时点间的相隔天数等。 【LED时钟与样式】 超漂亮的LED时钟,有默认时钟、蓝色时钟、经典时钟三种样式供选择。 【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表中对应图片名字的右边。 【将选区转换成图片】 将工作表中的当前选中区域另存为图片。 【一键导出图形】 将工作表中的图片导出为图片文件。 【导入图片到工作表】 将磁盘中的图片导入到工作表中。 【删除选中区域图形】 将工作表中当前选中区域的所有图片与图形删除。 【删除所有导入图形】 将工作表中存在的所有图片与图形瞬间删除。 【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的图片上显示其文件名称以易于管理。 【批量导出图片】 将EXCEL中指定某列中的图片按显示图片大小导出到指定的文件夹中。 批 注 工 具 【插入样式批注】 提供50种花样的批注供选择,可随时更换,且美观大方。 【插入图片批注】 不仅提供多样的批注供选择,且支持批注中加入图片背景。 【批量修改批注】 批量一次性修改选中存储格区域批注的样式。 【批量图片批注】 可批量将图片生成带图片背景的批注。 【批量名称图片批注】 可批量将图片依对应名称生成带图片背景的批注。 【显示与隐藏批注】 显示或隐藏工作表中选中区域的批注。 【可视化批注】 可视化地窗体操作添加与修改注解完整功能。 安全工具 【工作表解密】 可以破解工作表密码和工作簿密码。在不知道密码的前提下找回密码。 【VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该端口的进程一览表。 系 统 工 具 【锁定屏幕】 快捷一键式登出当前用户并锁定电脑,类似于CTRL+ALT+DEL功能。 【系统待机】 使用此功能可以达到节能及锁定电脑一键式进入系统待机状态,再次使用时恢復速度是最快的,一般五秒之內就可以恢復到上次使用状态而无需要重新开机了。 【锁定鼠标】 可即时锁定屏幕鼠标且支持密码锁定,有密码才可以解锁恢复被禁止的所有操作,能屏蔽所有的系统按键如:ALT+F4、CTRL+ALT+DEL、ESC、WIN等,支持桌面锁。 【任务管理器】 增强型的系统任务管理器,提供进程的PID及路径、进程文件属性及详细说明,以及进行结束进程与删除进程及设置LEVEL等操作。 【系统功能信息】 系统功能调用及相关信息,关闭电脑、重启电脑、电脑使用时间、磁盘剩余空间。 【查看IP信息】 查看本机LAN局域网的IP地址以及WAN外部网的公共IP地址(需要接入Internet)。 【显示桌面】 快捷的一键式显示桌面,有时桌面图标找不到时特别有用。 【资源管理器】 快捷的打开系统IE资源管理器,便于游览与管理文件夹与文件目录。 【系统分区表】 查看系统分区表与引导区(BOOT)内容,备份起来以防止CIH病毒的破坏。 函数工具 【插入函数】 以对话窗体方式插入类别中大约一百个左右的自订增益函数。 【函数帮助】 提供最常用的绝大多数自订增益函数的详细说明信息。 【函数实例】 以实例文档Function Sample.xls来列举常用自订增益函数的使用方法举例。 快 捷 工 具 【快捷简转繁】 将当前工作表中所有存储格的简体字批量转换成繁体,如果选NO时,则还包括当前工作表中的所有窗体控件中的文本也进行转换。 【快捷繁转简】 将当前工作表中所有存储格的繁体字批量转换成简体,如果选NO时,则还包括当前工作表中的所有窗体控件中的文本也进行转换。 【隐藏非使用区】 对当前工作薄中各工作表未使用区域进行快速隐藏。 【删除空白行】 以当前工作表已使用区域中的空行进行快速删除。 【反向选择】 选择当前选中区域相反的已使用存储格。 【数字转英文】 将当前工作表中所有存储格的金额数字转换成英文格式显示的表达字串,在确认之前可以更改选项以转换为值或用公式表达两种方式供选择。 【删除超级链接】 瞬间删除当前工作薄中所有的超级链接。 【删除工作薄链接】 瞬间删除当前工作薄中所有的地址引用链接。 【工作表目录】 对当前工作簿的所有工作表建立目录与编号,且生成链接,单击可以打开工作表。 【建文件夹目录】 可按选中存储格内容或者当月日期天数值来创建文件夹到指定文件夹中。 【建工作表及目录】 可按选中存储格内容或者当月日期天数值来创建EXCEL文档到指定文件夹中。 【取文件目录】 对指定文件夹中的文件在Excel中建立目录,且生成链接,单击可以打开对应的文件。 【IE论坛收藏】 将IE游览器收藏夹中的WEB地址名称及链接写入EXCEL中保存起来。 【ABC序列】 为EXCEL生成一个可用鼠标拖值处理的A-Z字母序列,一次生成,重复使用。 【百家姓序列】 为EXCEL生成一个可用鼠标拖值处理的百家姓序列,一次生成,重复使用。 【压缩工作薄】 对当前工作薄进行压缩减肥操作,适当缩小文件大小。 【数字小字转大写】 将选中区域存储格的小写金额批量转换成中文大写金额。 【数字大写转小写】 将选中区域存储格的中文大写金额批量转换成小写金额。 【筛选复制可见】 在筛选状态下,对选中区域复制时不复制已隐藏的内容,支持Excel2003以下版本。 【选中相同值】 可瞬间选中与当前某存储格内容相同的工作表中所有存储格,比多次选中操作省时。 【修复EXCEL】 当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态,本功能较同类工具清除更彻底。 合 并 唯 一 值 工 具 【筛选选区唯一值行】 以选择区域左边一列为条件进行唯一值筛选,输入1则删除重复值所在行,输入2则隐藏重复值所在行。 【消除选区重复值】 将选择中重复出现的数据删除,显示唯一值的数据序列。 【突出显示重复值】 将选择中重复出现的数据均以圈号标示出来。 【生成随机不重复值】 在A列生成指定数据范围1-9000000以及上的随机数序列。 【控制单列不重复值】 可控制任意一列(取值1-255表示A-IV列)存储格内容的是否出现重复值,当出现重复值时则自动适时弹出信息提醒,若取消控制(取0或空值)即可。 【可还原之合并】 用此功能对存储格合并后,可在任何时候还原为合并前的状态。 【还原合并数据】 对一列中合并后的单元格取消合并,且恢复合并前所有数据。 【还原合并且填充】 对一列中合并后的单元格取消合并,且用第一个存储格值进行向下与向右填充。 【合并数据并复制】 可以将一个区域的数据直接复制粘贴到一个单元格中。 【合并数据并居中】 合并居中数据,可以保留合并前的所有数据。而且取消合并后可以还原数据,强过Excel自带的合并 居中多倍。 【可视化合并数据】 用显示窗体可视化操作对存储格字符串进行合并连接。 增强插入 【插入FLASH动画】 将Flash动画嵌入到工作表中,并播放,可以随意定制Flash动画的显示大小和位置。动画嵌入工作表中,删除FLASH原文件不影响Excel中的效果,且允许是否需要保留Flash的缩放等操作菜单。 【插入GIF动画】 将GIF动画插入到工作表中播放,可以随意定制GIF的大小和位置,删除GIF原文件不影响Excel中的效果。 【插入MV动画】 将MV等多媒体动画或电影插入到工作表中播放,可以定制MV视频的大小和位置。 增 益 工 具 【存储格加解密】 对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。第二次执行时即可以恢复数据。理论上支持反复加密,但解密时需用相对应的密码。 【文本文件加密】 对文本TXT文件进行加密与解密操作。 【禁用USB使用】 禁止USB的即插即用功能,防止他人非正常使用外存储设备(无需重启动)。 【启用USB使用】 恢复USB的即插即用功能(无需重启动)。 【清除历史记录】 彻底清除垃圾文件、临时文件、IE缓存、历史记录、升级下载记录、IE地址记录、运行记录等,为系统磁盘赢得更多的剩余空间,较同类清除工具效果更明显。 【修改文件时间】 可随心所欲修改文件的创建、修改、访问时间,包括年月日时分秒,支持修改单个文件、批量文件以及包括子文件夹等多种方式修改。 【下载地址转换】 可在讯雷(Thunder)、网际快车(FlashGet)、QQ旋风(Qqdl)、普通地址(Http)之间相互转换下载地址,这样就无需同时安装多个下载工具了,为下载提供了方便。 【星号密码查看】 拖动图标到任何程序窗体中的密码框上方,即可将其密码显示出来。用IE密码查看器还可查看IE游览器(包括傲游览器)WEB网页中的密码框中的密码。 【程序调试工具】 用作程序自身的DEBUG调试与程序崩溃的自动修复等。 动 画 工 具 【鼠标跟随动画】 非常灵活的鼠标跟随动画,有四种样式自动切换且支持各种显示参数值设定,可以修改参数固定为其中的一种动画方式。 【显示茸茸小兔】 可爱的茸茸小兔显示在屏幕右下角,仿瑞星杀毒软件的卡卡动画。 【启用特效动画】 随鼠标选中不同存储格变化而出现的6个绿色自转动环的特效动画,第一次有了“这是在使用EXCEL中的功能吗”的惊奇。有随鼠标移动(选YES)与不随鼠标移动两种方式,可以通过禁用此动画。动画工具中的经典之一。 【多个休闲动画】 具有休闲与娱乐于一体的多个动画:喜悦黄鹂、勤劳蜜蜂、经梅迎春、青青竹子、时针指南、葡萄熟了、果实累累、花好月季等。为EXCEL增添一丝喜色。 【关闭所有动画】 一键迅速关闭所有已经打开的休闲动画。 休 闲 工 具 【媒体播放器】 简洁媒体播放器,可打开MP3、MP4、MPG、DVD等几乎所有格式的多媒体文体。 【播放FLASH】 支持打开所有SWF格式的FLASH文件进行播放,可以暂停或按帧播放。 【屏幕放大镜】 可以缩放屏幕任意区域,支持0.5倍、1倍、2倍、3倍、6倍放大效果。 【屏幕画笔】 可以手写并在当前屏幕背景图上圈、点、划、作波浪标记等均可,并可将结果保存为图片文件或插入到Excel中,可自定画笔粗细与颜色选择,支持随时清除所有标记。 【俄罗斯方块】 非常经典的俄罗斯方块积分小游戏,支持鼠标操作与键盘方向键(或WSADZ键)两种操作方式,空格与回车键为暂停切换键。 【在线音乐】 非常流行的网络在线音乐播放器,自动加载最近音乐排行榜,也可按名字或歌星搜索到最热的歌曲并加到播放清单中。 开 发 辅 助 【获取系统菜单】 获取VBA编程人员需要的关于菜单及及控件的名称及ID等相关信息。 【生成系统图标A】 VBA编程人员常用的工具。可以每页500项查询Excel内部图标及FaceId。 【生成系统图标B】 VBA编程人员常用的工具。增强查询与写Excel内部图标的ID号于空白的工作表中。 【显示基本颜色值】 显示最基本的56种基本颜色ID、名称与相对应的RGB颜色值以及网页颜色值。 【删除注释行】 可以瞬间清除当前工作薄中的所有模块、类模块及VBA子程序中的所有注释语句。 定制开发 【定制功能模块】 根据客户需求定制开发的模块功能:Aging库存报表、ERP存货报表、BOM表整理、标签制作、付款通知书、报表格式转换等。 帮助工具 【集成工具箱】 关于本工具必要帮助以及作者(梁瑞春)的EMAIL、个人主页、联系方式等相关信息。 【中英文显示】 支持繁简体操作系统,以及多语言显示:中文简体(黙认)、中文繁体、英文显示。 【更换皮肤】 支持窗体界面的皮肤切换,具有二十多款超漂亮的皮肤包供免费选择。 【仿2003样式菜单】 开始使用2007版朋友来说,有很大的不适应。这个插件模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 100个左右的自订EXCEL内置增益函数: 分类 函数名称 功能介绍 字  符  转  换 GB2BIG5 将存储格的简体字(GB2)转换成真正繁体字(BIG5)。一个参数即单元格引用。 BIG5GB2 将存储格的真正繁体字(BIG5)转换成简体字(GB2)。一个参数即单元格引用。 JianToFan (JtoF) 将存储格的简体字(GB2)转换成繁体字(GBK)。一个参数即单元格引用。 FanToJian (FtoJ) 将存储格的繁体字(GBK)转换成简体字(GB2)。一个参数即单元格引用。 ColumnNumber 将某字符所表示的列(或某单元格引用)转换为数字形式所表于的列号。一个参数取值范围为A--AZ。例如: ColumnNumber("AZ")=52表示为第52列。 ColumnText 将某数字所表示的列号(或某单元格引用)转换为字符形式所表于的列。一个参数取值范围为1--702。例如: ColumnText(256)=IV表示为IV列。 NumUpper 将存储格的小写数字金额转换为中文大写金额。一个参数即单元格引用。 NumLower 将存储格的中文大写金额转换为小写数字金额。一个参数即单元格引用。 NumtoEnglish 将存储格的小写金额转换为英文字符串表示的金额。第一个参数即单元格引用,第二个参数可省略,最标准的英文表达方式。 SpellNumber 将存储格的小写金额转换为英文字符串表示的金额。一个参数即单元格引用,适合美国美元表达习惯。 TextReverse 反转(倒置)文本字符串函数。一个参数即字符串表达式或单元格引用。 字  符  操  作 ChineseBiHua 取存储格的中文汉字的笔画。一个参数即单元格引用或中文汉字字符串。 Found 查找某字符在某字符串表达式的位置。第一个参数为要查找的字符串,第二个参数为字符串表达式或单元格引用,第三个参数为查找到的第N个字符串,若省略则表示查找第1个字符串。例如:Found("A","ABCDAEFGHAAA",3)=10 GetModelNumber 取产品MODEL型号。第一个参数为产品的英文数字描述的字串,第2个参数为指定MODEL型号的长度(默认为4),第3个参数为MODEL型号间的分隔符号,可任意。 GetMoneyPcs 取存储格的数字金额中包含对应人民币面额(100/50/20/10/5/2/1等)的张数。第一个参数即单元格引用,第二个参数为人民币(RMB)面额。 GetTax 计算个人所得税工具。第一个参数为计税总额,第二个参数为扣除数额。 GetTypeValue 将存储格的内容按需求进行字符分离与表达式计算。第一个参数即单元格引用,第二个参数即类型取值范围为1-10(1-只保留数字. 2-只保留字母. 3-只留中文(包含空格). 4-只保留数字和小数点. 5-只保留数字和运算符号+-*/^. 6-只保留字母和数字. 7-去掉数字. 8-去除英文大小写字符. 9-去除中文. 10-这里指去除所有空格符)。 HZtoPY 将存储格的内容中的中文汉字转换为拼音。第一个参数为单元格引用,第二个参数为是否只对汉字转换(1或0),第三个参数为间隔符号。后面两个参数可以省略。 NumInt 将存储格的数字金额转换为按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例如:NumInt(9825.65,5)=9825, NumInt(9825.65,10)=9830。面值参数越大差异越大。 NumIntDown 将存储格的数字金额转换为向下按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例: NumIntDown(9825.65,5)=9820, NumIntDown(9825.65,10)=9820。面值参数越大差异越大。 NumIntUp 将存储格的数字金额转换为向上按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例如:NumIntUp(9825.65,5)=9830, NumIntUp(9825.65,10)=9830。面值参数越大差异越大。 ReplaceIn 字符替换含数。第一个参数为字符串表达式或单元格引用,第二个参数为要查找的字符串,第三个参数为新替换的字符串,第四个参数为从找到的第N个字符开始替换。 RightFind 从右向左查找字符串的函数。例如:RightFind("BCADEA","A")=6 存 储 格 操 作 ClearBlank 消除空值函数。可以选择多行多列,按先行后列之方式返回值.两个参数,第一个参数为存储格区域引用,第二个参数为需要取数的序号(1--N)。 ColorCount 取存储格范围内某颜色值的存储格个数。第一个参数为储格范围引用,第二个参数为某颜色Index值或某单元格引用。 ColorSum 按背景颜色对区域值求和。第一参数为求和区域,第二参数为背景颜色参照值。 FormulaView 显示公式函数。提取单元格中的公式,第一个参数单元格引用,第二个参数可省略。 GradeAverage 评委评分函数。计算引用存储格区域中去除最大值与最小值之后再求平均数。 GetFolderPathName 用于创建带链接的文件目录,有二个参数,第一参数为指定路径的字符串,第二参数指定取值编号(数字序号1--N)。 GetComment 提取存储格批注中的文字。只有一个参数,即单元格引用。 CommonItem 返回两个存储格区域的共有项目。前两个参数为区域,第三参数为取数序号1--N。 VarianceItem 返回第一区域中有而第二区域没有的项目。前两个参数是区域,第三参数为序号。 SplitGetValue 按分割符取数。第一参数为单元格引用,第二参数表示取第N个字符串,第三个参数表示分割符号,可任意字符。 UnionString 将区域字符进行合并。第一参数为分割符,第二参数为引用区域。可以用""表示不使用分割符。第三参数开始为引用区域,可以有1到254个区域(Excel2003中是1到29个)。也还可以直接用文本做参数。 普通函数 BookName 取工作薄名称目录。一个参数,输入工作薄序号即返回相应工作薄名称。 SheetName 取工作表名称目录。一个参数,输入工作表序号即返回相应工作表名称。 GoldPoint 数学中黄金分割点的精确取值。 PI 数学中PI(π)的精确取值。PI=3.1415926535897932384626433832795. 系统函数 CloseExcel 不保存当前文档而直接退出EXCEL。 ComputerChangeName 更改计算机名称。一个参数即任意的名称字符串。 ComputerLock 电脑进入登出锁定状态。一个可选参数可以省略。 ComputerSleep 电脑进入待机休眠状态。一个可选参数可以省略。 USB USB盘的禁用与恢复启用。一个字符串参数即Enabled为启用,Disabled为禁用。 对于无法安装的朋友请注意以下4点 : 一:必须是完整版OFFICE,不能是绿色版、精简版,它们不支持COM加载宏. 二:必须关闭Excel状态下安装或者删除工具,安装后重启Excel即可. 三:如果是VISTA或WIN 7,必须以管理员用户安装,且从控制面板中关掉用户帐户控制(UAC)功能. 四:如果您装了其它的EXCEL工具,请先关掉它,它们有可能删除本工具的菜单. 安装方法:(也可参考安装说明.TXT文档) 安装说明与使用规则: 1.1.绿色版本安装:管理员用户运行Setup.exe进行安装程序! 运行UnSetup.exe进行反安装程序! 1.2.绿色版本安装:非管理员用户可运行Register.bat进行安装程序! 运行UnRegister.bat进行反安装程序! 2.1.若安装并使用后因误操作报错时(例如EXCEL打开后未能加载工具菜单),可以卸载后重新安装到另外不同的目录中即可恢复正常.(因微软COM的保护措施而致)! 2.2.建议每天只打开EXCEL主程序一次为宜,保持打开状态不要关闭.(文档则可任意多次打开). 3.1.由于免费标签插件ExcelTab.dll与系统的兼容性问题,安装后在使用过程中若出现屏幕微小抖动或影响正常使用时,请将安装目录Librarys中的ExcelTab.dll 文件改名或删除即可! (不过出现的几率为1%左右). 或者请下载后24小时之内将其删除即可,而不会影响本工具箱的功能! 功能使用帮助动画: http://xutu.net/viewfile/2451/N4Jx3Thi/ EXCEL集成工具箱V7.0使用帮助.rar 需知更多请访问官方论坛: Http://exceltools.5d6d.com  留言或Email给作者。
EXCEL集成工具箱V8.0 多国语言版(2003-2010通用)增强版! * 软件大小: 22.90MB * 软件授权: 免费共享软件 * 软件语言: 多国语言[中文繁体/简体/英文] * 开 发 商: 创思维软件工作室 * 更新时间: 2010-09-22 * 应用平台: Win9X/Win2000/WinXP/Win2003/Vista/Wind7 Excel集成工具箱8.0是利用VBA(Visual Basic for Applications)语言编写的增强应用型插件。包括160个菜单功能和100个左右 自定义函数,集160个工具于一身,但体积小于16MB。当安装集成工具箱后,如果您使用Excel 2003,则将产生【工具箱】菜单, 包括160多个子菜单;如果您使用Excel 2007或者2010,将产生【集成】与【工具箱】功能区。根据各功能的特点,对子菜单 作了18个分类, 而在函数向导对话框中也生成100个左右新的函数,用于扩展Excel的计算功能。且所有功能都通用于 Excel 2002、2003和2007、2010。支持中英文显示与繁简体操作系统、拥有20多款华丽的皮肤界面,支持Excel2007全面 隐藏选项卡,这个插件还模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 ============================================================================================ 下载地址(集成工具箱本身3.84MB,解压后超过16MB,不含帮助文件): 网盘下载:http://www.brsbox.com/jackeyliang(含帮助,解压超过50MB) 共享资料下载: http://ishare.iask.sina.com.cn/f/10201782.html EXCEL集成工具箱V8.0完整增强版.rar 多特软件站下载: http://www.duote.com/soft/1495.html EXCEL集成工具箱V8.0完整版.rar (22.90MB) 非凡软件站下载: http://www.crsky.com/soft/22056.html EXCEL集成工具箱V8.0完整版.rar (22.90MB) 绿色软件站下载: http://soft.syue.com/soft/98/99/2010/2010081491963.html EXCEL集成工具箱V7.0完整版.rar (19.42MB) 软件屋下载: http://soft.softhouse.com.cn/software/show/76357.html EXCEL集成工具箱V7.0完整版.rar 大观软件站下载: http://guansky.com/soft/html/15828.html EXCEL集成工具箱V7.0完整版.rar IT资讯平台下载: http://download.it168.com/547/1483/index.shtml EXCEL集成工具箱V7.0完整版.rar ============================================================================================= 本工具箱160个菜单工具的功能介绍如下: 分类 功能名称 功能介绍 繁简转换 【简体转繁体】 将选中区域存储格的简体字批量转换成繁体。 【繁体转简体】 将选中区域存储格的繁体字批量转换成简体。 【综合计算显示】 综合计算并显示选中区域存储格的最大值、最小值、平均值、求和、存储格个数、筛选状态下的的加总求和,以及显示选区包含的数字、字符、汉字的个数等信息。 【GB2转BIG5】 将选中区域存储格的简体字(GB2)批量转换成繁体操作系统的繁体(BIG5)。 【BIG5转GB2】 将选中区域存储格的繁体字(BIG5)批量转换成简体操作系统的简体(GB2)。 完 美 背 景 着 色 【选区背景】 默认启动智能着色方式,此功能会清除一部分背景颜色,但对工作表中的条件格式会作完全保留,丝毫没有影响。最大的特点是支持屏幕行列捲轴的操作而不影响显示。 【选区背景选择】 进行着色功能切换,支持行着色、列着色、行与列同时着色、智能着色、选区着色、反向着色共6种方式供选择,可以自定义56种基本及颜色板任意着色颜色。 【条件背景】 默认启动智能着色方式,此功能不会清除背景颜色,但会对工作表中的条件格式作自动清除。最大的特点是支持屏幕行列捲轴的操作而不影响显示。 【条件背景选择】 进行着色功能切换,支持行着色、列着色、行与列同时着色、智能着色、选区着色、反向着色共6种方式供选择,可以自定义56种基本及颜色板任意着色颜色。 【高级背景】 将选择的行进行颜色标示,以突出当前行,有利于数据查看。可以随心所欲地定义颜色,还可以自由调整颜色的深浅。本工具相对于同类工具有不破坏背景色、条件格式、复制粘贴和撤消功能之优点。 【高级背景选择】 背景着色的高级功能,支持行着色、列着色、行与列同时着色共3种方式供选择。 快捷取数 【快捷取数列】 随存储格即时移动的快捷数据清单,可取任意区域的数据为唯一值清单,提高数据录入效率。最重要的是清单的最后6项为子程序功能,点击则可以完成增加清单显示宽度,选中或反选所有清单、写清单到任意存储格、重新加载数据等操作。也可以重新加载另外一区域或某几列的数据,也可以重新设定功能的生效存储格范围。 【快捷取日期】 随存储格即时移动的快捷日期数据清单,且有已录入日期的记忆功能。所有快捷取数工具都具有使用30秒钟则自动隐藏功能,用户可以决定是否取消其自动隐藏清单。 【快捷综合取数】 功能较功能更强大,支持同时取6个不同存储格区域(或列)为6个唯一值清单,并在指定的6个不同的生效范围自适应地显示对应的清单。清单的最后6项也为子程序功能,能完成相关操作。且支持重新加载数据及重设定生效存储格范围。 财 务 工 具 【自动填充】 不同于EXCEL的CTRL+D功能,能对选中的某列数据不同存储格区域的空白处,取相邻的上一不为空的存储格内容同时作数据源的自动填充。1分钟内能处理手工需几小时才能完成的几万行ERP或KingDee原始数据。极力推荐的工具之一。 【取唯一值】 能瞬间取任意存储格区域的内容为不含重复值的唯一值清单,加载到工具中并提供随时随地调用,具有重复加载与读写的特点。 【添加注解】 可视化地窗体添加与修改注解功能。提供50种美观大方的批注样式供选择,支持图片背景批注与批量写批注。最大的优点是将指定的任意区域按每个存储格内容为一行加入到当前批注中,允许批注内容中是否显示行号。 【连接字符串】 可视化地窗体连接字符串功能。能将最多三个任意区域存储格(或列)的内容按自定的分隔符号连接成一个字符串写入指定的存储格或新工作表中。可以生成含重复值与不含重复值并可选是否排序的连接字符串。连接上万个字符只需短短1分钟即完成。 【隔行插入】 在当前工作表中允许从M行到N行,隔X行插入Y行,并允许是否需复制标题Z行。 【制作工资条】 瞬间将工资明细表生成工资条,方便打印并裁剪。可以自己定义工资条标题的行数以及相隔行数、插入行数等。并能动态地显示运行过程,支持程序运行后中途暂停。 【恢复工资条】 能将已生成工资条的工资明细表,快速地还原为初始状态,支持多种参数设定。 【生成数据列】 生成发票号码序列的得力助手,可以生成任意的奇偶数列,差值或倍值或者递增、递减的任意有理数数据序列,支持先行后列与先列后行两种方式,支持瞬时恢复清除。 【取RMB张数】 根据员工的工资计算需要多少张100元、50元......1元的钞票,可以批量累计计算。发现金工资的财务工作者的必备工具之一。 【数字转英文】 将选中区域(默认)或已使用区域存储格的金额数字转换成英文格式显示的表达字符串,为三资企业制作客户外汇付款通知书的理想工具。 【文本转EXCEL】 将文本文件按指定的分隔符号分隔一次性导入到EXCEL文档中。提供两种导入方式。 【EXCEL转文本】 将当前工作表中存储格的内容按指定分隔符号导出为TEXT文本,此为银行代发工资数据与邮局或银行传递数据的便利工具之一。并提供两种方式的转换。 成本核算 【取唯一值】 还在使用或功能对数据进行唯一值的繁锁操作吗? 本工具可快捷方便地取任意选中区域的存储格内容为唯一值清单,快捷且高效。 【取产品型号】 功能较在字符串中取数字强大多倍。能批量取某列存储格按指定长度的数字并允许特定数字串的获取,例如M76000,RC76000等。而小于指定长度的数字串则不予获取。 【快速选定数据】 可瞬间选中与用户指定内容相同的当前工作表中所有存储格,方便选定、清除内容或其他操作,支持选中字体彩色是否着色。 【取型号使用范围】 取MATCH的两列数据(Relating Area)中对应MODEL的使用范围(Where Used)。 常 用 工 具 【繁简转换】 可视化的繁简体GB与BGK码以及GB2与BIG5码相互转换,可以复制文本到当前窗体中文本进行转换,也可以实现单个文件或批量文件的转换。在窗体中双击文本字符串尾即可实现自动选定文本并自动复制功能。本工具较同类转换工具准确率达100%。 【背景颜色】 提供可视化的可选择着色方式的背景着色功能,默认启用智能着色。 【文件批量改名】 功能完善的文件或图片批量改名工具。细分为多方式改名,优点明显。例:替换字符串就支持起始长度、替换个数、GB2与BIG5码相互转换等多选项操作,也支持文件扩展名的修改。现为市场上功能最强大的一款文件及图片批量改名工具。 【工作表保护】 对当前工作薄中的各工作表批量一次性用指定密码进行锁定与解锁操作。 【工作表隐藏】 对当前工作薄中的各工作表批量一次性进行隐藏与取消隐藏操作。 【新建工作表】 批量新建或者复制工作表,依指定存储格内容可以瞬间建立/复制1到255个。还可以在新建或复制时全自动命名。分为自动新增方式与依指定存储格内容两种方式。 【插入批注背景】 可以选定任意一幅图片为批注背景来插入一个带图片背景的批注。可视化窗体操作,可随时更换批注样式,也支持批量多存储格样式修改。 【插入行数】 对工作表隔行插入行并可以复制标题行,其中对相隔行数、插入行数等可以自定义。 【注解样式】 可以插入多达50种样式的注解,支持随时切换当前注解样式为指定的样式。 【工作表拆分】 将当前工作表的某列数据按指定条件拆分成多个工作表,可以用任意列的数据以及选定的数据做为拆分条件。 【行列奇偶选择】 可视化对当前工作表的行与列进行快速的奇偶行或奇偶列快速选定操作。 【查找与替换】 增强型EXCEL内置查找与替换功能。可以按设置搜索任何字符串(包括*或?符以及公式中包含的某字符),也可以将搜索结果写入到一新的工作表中以备查。 【工具箱选项】 集成工具箱的基本选项设置。基本分为。其中功能窗体显示区(NoTaskbar)功能可设置本工具启用的窗体图标是否在状态栏显示,并允许切换功能。 扩 展 工 具 【屏幕截图】 可以截取屏幕任意一区域并复制或另存为图片,可随意更改大小,操作灵活性特强。 【屏幕取色】 经典的屏幕取色工具,可取任意一处屏幕颜色到指定的存储格中,可显示为RGB颜色值或十六进制的颜色值,为VBA开发人员的辅助工具之一。 【万年日历】 可以查询所有节、假日信息和公农双历,以及计算两时点间的相隔天数等。 【LED时钟与样式】 超漂亮的LED时钟,有默认时钟、蓝色时钟、经典时钟三种样式供选择。 【系统常用工具】 系统常用工具的快捷调用,例如:计算器、记事本、WORD、画图板。 【隐藏选项卡】 可以隐藏Excel2007及2010功能区的各选项卡(如:开始、插入、开发工具等)。 图 片 工 具 【选择本表图片】 将工作表中的图表导出为图片保存起来。 【批量导入图片到右列】 批量将图片导入到工作表中对应图片名字的右边。 【将选区转换成图片】 将工作表中的当前选中区域另存为图片。 【一键导出图形】 将工作表中的图片导出为图片文件。 【导入图片到工作表】 将磁盘中的图片导入到工作表中。 【删除选中区域图形】 将工作表中当前选中区域的所有图片与图形删除。 【删除所有导入图形】 将工作表中存在的所有图片与图形瞬间删除。 【批量导入图片】 将指定文件夹或包含子文件夹中所有图片瞬间(也可以按对应名称)按指定图片大小导入EXCEL中。允许一次性多图片格式(*.JPG/*.GIF/*.BMP/*.PNG),且支持模糊与非模糊方式导入图片,还可以在导入的图片上显示其文件名称以易于管理。 【批量导出图片】 将EXCEL中指定某列中的图片按显示图片大小导出到指定的文件夹中。 批 注 工 具 【插入样式批注】 提供50种花样的批注供选择,可随时更换,且美观大方。 【插入图片批注】 不仅提供多样的批注供选择,且支持批注中加入图片背景。 【批量修改批注】 批量一次性修改选中存储格区域批注的样式。 【批量图片批注】 可批量将图片生成带图片背景的批注。 【批量名称图片批注】 可批量将图片依对应名称生成带图片背景的批注。 【显示与隐藏批注】 显示或隐藏工作表中选中区域的批注。 【可视化批注】 可视化地窗体操作添加与修改注解完整功能。 安全工具 【工作表解密】 可以破解工作表密码和工作簿密码。在不知道密码的前提下找回密码。 【VBA工程解密】 将有密码的VBA工程代码破解,直接打开即可修改代码。相当于VBA工程免密查看。 【隐藏与显示磁盘】 隐藏与显示磁盘本地磁盘盘符(无需重启动)。 【端口进程查询】 查看本机开放的系统端口以及使用该端口的进程一览表。 系 统 工 具 【锁定屏幕】 快捷一键式登出当前用户并锁定电脑,类似于CTRL+ALT+DEL功能。 【系统待机】 使用此功能可以达到节能及锁定电脑一键式进入系统待机状态,再次使用时恢復速度是最快的,一般五秒之內就可以恢復到上次使用状态而无需要重新开机了。 【锁定鼠标】 可即时锁定屏幕鼠标且支持密码锁定,有密码才可以解锁恢复被禁止的所有操作,能屏蔽所有的系统按键如:ALT+F4、CTRL+ALT+DEL、ESC、WIN等,支持桌面锁。 【任务管理器】 增强型的系统任务管理器,提供进程的PID及路径、进程文件属性及详细说明,以及进行结束进程与删除进程及设置LEVEL等操作。 【系统功能信息】 系统功能调用及相关信息,关闭电脑、重启电脑、电脑使用时间、磁盘剩余空间。 【查看IP信息】 查看本机LAN局域网的IP地址以及WAN外部网的公共IP地址(需要接入Internet)。 【显示桌面】 快捷的一键式显示桌面,有时桌面图标找不到时特别有用。 【资源管理器】 快捷的打开系统IE资源管理器,便于游览与管理文件夹与文件目录。 【系统分区表】 查看系统分区表与引导区(BOOT)内容,备份起来以防止CIH病毒的破坏。 函数工具 【插入函数】 以对话窗体方式插入类别中大约一百个左右的自订增益函数。 【函数帮助】 提供最常用的绝大多数自订增益函数的详细说明信息。 【函数实例】 以实例文档Function Sample.xls来列举常用自订增益函数的使用方法举例。 快 捷 工 具 【快捷简转繁】 将当前工作表中所有存储格的简体字批量转换成繁体,如果选NO时,则还包括当前工作表中的所有窗体控件中的文本也进行转换。 【快捷繁转简】 将当前工作表中所有存储格的繁体字批量转换成简体,如果选NO时,则还包括当前工作表中的所有窗体控件中的文本也进行转换。 【隐藏非使用区】 对当前工作薄中各工作表未使用区域进行快速隐藏。 【删除空白行】 以当前工作表已使用区域中的空行进行快速删除。 【反向选择】 选择当前选中区域相反的已使用存储格。 【数字转英文】 将当前工作表中所有存储格的金额数字转换成英文格式显示的表达字串,在确认之前可以更改选项以转换为值或用公式表达两种方式供选择。 【删除超级链接】 瞬间删除当前工作薄中所有的超级链接。 【删除工作薄链接】 瞬间删除当前工作薄中所有的地址引用链接。 【工作表目录】 对当前工作簿的所有工作表建立目录与编号,且生成链接,单击可以打开工作表。 【建文件夹目录】 可按选中存储格内容或者当月日期天数值来创建文件夹到指定文件夹中。 【建工作表及目录】 可按选中存储格内容或者当月日期天数值来创建EXCEL文档到指定文件夹中。 【取文件目录】 对指定文件夹中的文件在Excel中建立目录,且生成链接,单击可以打开对应的文件。 【IE论坛收藏】 将IE游览器收藏夹中的WEB地址名称及链接写入EXCEL中保存起来。 【ABC序列】 为EXCEL生成一个可用鼠标拖值处理的A-Z字母序列,一次生成,重复使用。 【百家姓序列】 为EXCEL生成一个可用鼠标拖值处理的百家姓序列,一次生成,重复使用。 【压缩工作薄】 对当前工作薄进行压缩减肥操作,适当缩小文件大小。 【数字小字转大写】 将选中区域存储格的小写金额批量转换成中文大写金额。 【数字大写转小写】 将选中区域存储格的中文大写金额批量转换成小写金额。 【筛选复制可见】 在筛选状态下,对选中区域复制时不复制已隐藏的内容,支持Excel2003以下版本。 【选中相同值】 可瞬间选中与当前某存储格内容相同的工作表中所有存储格,比多次选中操作省时。 【修复EXCEL】 当您的Excel某些功能无法使用时,或者无缘无故多出很多菜单、工具栏时,本工具可以瞬间恢复Excel到默认状态,本功能较同类工具清除更彻底。 合 并 唯 一 值 工 具 【筛选选区唯一值行】 以选择区域左边一列为条件进行唯一值筛选,输入1则删除重复值所在行,输入2则隐藏重复值所在行。 【消除选区重复值】 将选择中重复出现的数据删除,显示唯一值的数据序列。 【突出显示重复值】 将选择中重复出现的数据均以圈号标示出来。 【生成随机不重复值】 在A列生成指定数据范围1-9000000以及上的随机数序列。 【控制单列不重复值】 可控制任意一列(取值1-255表示A-IV列)存储格内容的是否出现重复值,当出现重复值时则自动适时弹出信息提醒,若取消控制(取0或空值)即可。 【可还原之合并】 用此功能对存储格合并后,可在任何时候还原为合并前的状态。 【还原合并数据】 对一列中合并后的单元格取消合并,且恢复合并前所有数据。 【还原合并且填充】 对一列中合并后的单元格取消合并,且用第一个存储格值进行向下与向右填充。 【合并数据并复制】 可以将一个区域的数据直接复制粘贴到一个单元格中。 【合并数据并居中】 合并居中数据,可以保留合并前的所有数据。而且取消合并后可以还原数据,强过Excel自带的合并 居中多倍。 【可视化合并数据】 用显示窗体可视化操作对存储格字符串进行合并连接。 增强插入 【插入FLASH动画】 将Flash动画嵌入到工作表中,并播放,可以随意定制Flash动画的显示大小和位置。动画嵌入工作表中,删除FLASH原文件不影响Excel中的效果,且允许是否需要保留Flash的缩放等操作菜单。 【插入GIF动画】 将GIF动画插入到工作表中播放,可以随意定制GIF的大小和位置,删除GIF原文件不影响Excel中的效果。 【插入MV动画】 将MV等多媒体动画或电影插入到工作表中播放,可以定制MV视频的大小和位置。 增 益 工 具 【存储格加解密】 对工作表选区的数据进行加密,转换成乱码,有密码才可以查看。第二次执行时即可以恢复数据。理论上支持反复加密,但解密时需用相对应的密码。 【文本文件加密】 对文本TXT文件进行加密与解密操作。 【禁用USB使用】 禁止USB的即插即用功能,防止他人非正常使用外存储设备(无需重启动)。 【启用USB使用】 恢复USB的即插即用功能(无需重启动)。 【清除历史记录】 彻底清除垃圾文件、临时文件、IE缓存、历史记录、升级下载记录、IE地址记录、运行记录等,为系统磁盘赢得更多的剩余空间,较同类清除工具效果更明显。 【修改文件时间】 可随心所欲修改文件的创建、修改、访问时间,包括年月日时分秒,支持修改单个文件、批量文件以及包括子文件夹等多种方式修改。 【下载地址转换】 可在讯雷(Thunder)、网际快车(FlashGet)、QQ旋风(Qqdl)、普通地址(Http)之间相互转换下载地址,这样就无需同时安装多个下载工具了,为下载提供了方便。 【星号密码查看】 拖动图标到任何程序窗体中的密码框上方,即可将其密码显示出来。用IE密码查看器还可查看IE游览器(包括傲游览器)WEB网页中的密码框中的密码。 【程序调试工具】 用作程序自身的DEBUG调试与程序崩溃的自动修复等。 动 画 工 具 【鼠标跟随动画】 非常灵活的鼠标跟随动画,有四种样式自动切换且支持各种显示参数值设定,可以修改参数固定为其中的一种动画方式。 【显示茸茸小兔】 可爱的茸茸小兔显示在屏幕右下角,仿瑞星杀毒软件的卡卡动画。 【启用特效动画】 随鼠标选中不同存储格变化而出现的6个绿色自转动环的特效动画,第一次有了“这是在使用EXCEL中的功能吗”的惊奇。有随鼠标移动(选YES)与不随鼠标移动两种方式,可以通过禁用此动画。动画工具中的经典之一。 【多个休闲动画】 具有休闲与娱乐于一体的多个动画:喜悦黄鹂、勤劳蜜蜂、经梅迎春、青青竹子、时针指南、葡萄熟了、果实累累、花好月季等。为EXCEL增添一丝喜色。 【关闭所有动画】 一键迅速关闭所有已经打开的休闲动画。 休 闲 工 具 【媒体播放器】 简洁媒体播放器,可打开MP3、MP4、MPG、DVD等几乎所有格式的多媒体文体。 【播放FLASH】 支持打开所有SWF格式的FLASH文件进行播放,可以暂停或按帧播放。 【屏幕放大镜】 可以缩放屏幕任意区域,支持0.5倍、1倍、2倍、3倍、6倍放大效果。 【屏幕画笔】 可以手写并在当前屏幕背景图上圈、点、划、作波浪标记等均可,并可将结果保存为图片文件或插入到Excel中,可自定画笔粗细与颜色选择,支持随时清除所有标记。 【俄罗斯方块】 非常经典的俄罗斯方块积分小游戏,支持鼠标操作与键盘方向键(或WSADZ键)两种操作方式,空格与回车键为暂停切换键。 【在线音乐】 非常流行的网络在线音乐播放器,自动加载最近音乐排行榜,也可按名字或歌星搜索到最热的歌曲并加到播放清单中。 开 发 辅 助 【获取系统菜单】 获取VBA编程人员需要的关于菜单及及控件的名称及ID等相关信息。 【生成系统图标A】 VBA编程人员常用的工具。可以每页500项查询Excel内部图标及FaceId。 【生成系统图标B】 VBA编程人员常用的工具。增强查询与写Excel内部图标的ID号于空白的工作表中。 【显示基本颜色值】 显示最基本的56种基本颜色ID、名称与相对应的RGB颜色值以及网页颜色值。 【删除注释行】 可以瞬间清除当前工作薄中的所有模块、类模块及VBA子程序中的所有注释语句。 定制开发 【定制功能模块】 根据客户需求定制开发的模块功能:Aging库存报表、ERP存货报表、BOM表整理、标签制作、付款通知书、报表格式转换等。 帮助工具 【集成工具箱】 关于本工具必要帮助以及作者(梁瑞春)的EMAIL、个人主页、联系方式等相关信息。 【中英文显示】 支持繁简体操作系统,以及多语言显示:中文简体(黙认)、中文繁体、英文显示。 【更换皮肤】 支持窗体界面的皮肤切换,具有二十多款超漂亮的皮肤包供免费选择。 【仿2003样式菜单】 开始使用2007版朋友来说,有很大的不适应。这个插件模拟了一个Excel2003样式的菜单,目的就是方便那些从Excel2003转向使用2007或2010版的朋友使用。 100个左右的自订EXCEL内置增益函数: 分类 函数名称 功能介绍 字  符  转  换 GB2BIG5 将存储格的简体字(GB2)转换成真正繁体字(BIG5)。一个参数即单元格引用。 BIG5GB2 将存储格的真正繁体字(BIG5)转换成简体字(GB2)。一个参数即单元格引用。 JianToFan (JtoF) 将存储格的简体字(GB2)转换成繁体字(GBK)。一个参数即单元格引用。 FanToJian (FtoJ) 将存储格的繁体字(GBK)转换成简体字(GB2)。一个参数即单元格引用。 ColumnNumber 将某字符所表示的列(或某单元格引用)转换为数字形式所表于的列号。一个参数取值范围为A--AZ。例如: ColumnNumber("AZ")=52表示为第52列。 ColumnText 将某数字所表示的列号(或某单元格引用)转换为字符形式所表于的列。一个参数取值范围为1--702。例如: ColumnText(256)=IV表示为IV列。 NumUpper 将存储格的小写数字金额转换为中文大写金额。一个参数即单元格引用。 NumLower 将存储格的中文大写金额转换为小写数字金额。一个参数即单元格引用。 NumtoEnglish 将存储格的小写金额转换为英文字符串表示的金额。第一个参数即单元格引用,第二个参数可省略,最标准的英文表达方式。 SpellNumber 将存储格的小写金额转换为英文字符串表示的金额。一个参数即单元格引用,适合美国美元表达习惯。 TextReverse 反转(倒置)文本字符串函数。一个参数即字符串表达式或单元格引用。 字  符  操  作 ChineseBiHua 取存储格的中文汉字的笔画。一个参数即单元格引用或中文汉字字符串。 Found 查找某字符在某字符串表达式的位置。第一个参数为要查找的字符串,第二个参数为字符串表达式或单元格引用,第三个参数为查找到的第N个字符串,若省略则表示查找第1个字符串。例如:Found("A","ABCDAEFGHAAA",3)=10 GetModelNumber 取产品MODEL型号。第一个参数为产品的英文数字描述的字串,第2个参数为指定MODEL型号的长度(默认为4),第3个参数为MODEL型号间的分隔符号,可任意。 GetMoneyPcs 取存储格的数字金额中包含对应人民币面额(100/50/20/10/5/2/1等)的张数。第一个参数即单元格引用,第二个参数为人民币(RMB)面额。 GetTax 计算个人所得税工具。第一个参数为计税总额,第二个参数为扣除数额。 GetTypeValue 将存储格的内容按需求进行字符分离与表达式计算。第一个参数即单元格引用,第二个参数即类型取值范围为1-10(1-只保留数字. 2-只保留字母. 3-只留中文(包含空格). 4-只保留数字和小数点. 5-只保留数字和运算符号+-*/^. 6-只保留字母和数字. 7-去掉数字. 8-去除英文大小写字符. 9-去除中文. 10-这里指去除所有空格符)。 HZtoPY 将存储格的内容中的中文汉字转换为拼音。第一个参数为单元格引用,第二个参数为是否只对汉字转换(1或0),第三个参数为间隔符号。后面两个参数可以省略。 NumInt 将存储格的数字金额转换为按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例如:NumInt(9825.65,5)=9825, NumInt(9825.65,10)=9830。面值参数越大差异越大。 NumIntDown 将存储格的数字金额转换为向下按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例: NumIntDown(9825.65,5)=9820, NumIntDown(9825.65,10)=9820。面值参数越大差异越大。 NumIntUp 将存储格的数字金额转换为向上按整数四舍五入的整数金额。第一个参数即单元格引用,第二个参数为人民币面额(取值为5或10)。例如:NumIntUp(9825.65,5)=9830, NumIntUp(9825.65,10)=9830。面值参数越大差异越大。 ReplaceIn 字符替换含数。第一个参数为字符串表达式或单元格引用,第二个参数为要查找的字符串,第三个参数为新替换的字符串,第四个参数为从找到的第N个字符开始替换。 RightFind 从右向左查找字符串的函数。例如:RightFind("BCADEA","A")=6 存 储 格 操 作 CheckId 身份证信息查询及验证函数。一个参数即为单元格引用或身份证号码字符串。返回信息为:地区信息+出生年月日+性别+出生序号+是否验证成功。可取身份证前2位或4位或6位或10位或14位(也可后面以0数字补充)即显示地区信息;完整应取18位身份证字串数据。 ClearBlank 消除空值函数。可以选择多行多列,按先行后列之方式返回值.两个参数,第一个参数为存储格区域引用,第二个参数为需要取数的序号(1--N)。 ColorCount 取存储格范围内某颜色值的存储格个数。第一个参数为储格范围引用,第二个参数为某颜色Index值或某单元格引用。 ColorSum 按背景颜色对区域值求和。第一参数为求和区域,第二参数为背景颜色参照值。 FormulaView 显示公式函数。提取单元格中的公式,第一个参数单元格引用,第二个参数可省略。 GradeAverage 评委评分函数。计算引用存储格区域中去除最大值与最小值之后再求平均数。 GetFolderPathName 用于创建带链接的文件目录,有二个参数,第一参数为指定路径的字符串,第二参数指定取值编号(数字序号1--N)。 GetComment 提取存储格批注中的文字。只有一个参数,即单元格引用。 CommonItem 返回两个存储格区域的共有项目。前两个参数为区域,第三参数为取数序号1--N。 VarianceItem 返回第一区域中有而第二区域没有的项目。前两个参数是区域,第三参数为序号。 SplitGetValue 按分割符取数。第一参数为单元格引用,第二参数表示取第N个字符串,第三个参数表示分割符号,可任意字符。 UnionString 将区域字符进行合并。第一参数为分割符,第二参数为引用区域。可以用""表示不使用分割符。第三参数开始为引用区域,可以有1到254个区域(Excel2003中是1到29个)。也还可以直接用文本做参数。 普通函数 BookName 取工作薄名称目录。一个参数,输入工作薄序号即返回相应工作薄名称。 SheetName 取工作表名称目录。一个参数,输入工作表序号即返回相应工作表名称。 GoldPoint 数学中黄金分割点的精确取值。 PI 数学中PI(π)的精确取值。PI=3.1415926535897932384626433832795. 系统函数 CloseExcel 不保存当前文档而直接退出EXCEL。 ComputerChangeName 更改计算机名称。一个参数即任意的名称字符串。 ComputerLock 电脑进入登出锁定状态。一个可选参数可以省略。 ComputerSleep 电脑进入待机休眠状态。一个可选参数可以省略。 USB USB盘的禁用与恢复启用。一个字符串参数即Enabled为启用,Disabled为禁用。 对于无法安装的朋友请注意以下4点 : 一:必须是完整版OFFICE,不能是绿色版、精简版,它们不支持COM加载宏. 二:必须关闭Excel状态下安装或者删除工具,安装后重启Excel即可. 三:如果是VISTA或WIN 7,必须以管理员用户安装,且从控制面板中关掉用户帐户控制(UAC)功能. 四:如果您装了其它的EXCEL工具,请先关掉它,它们有可能删除本工具的菜单. 安装方法:(也可参考安装说明.TXT文档) 安装说明与使用规则: 1.1.绿色版本安装:管理员用户运行Setup.exe进行安装程序! 运行UnSetup.exe进行反安装程序! 1.2.绿色版本安装:非管理员用户可运行Register.bat进行安装程序! 运行UnRegister.bat进行反安装程序! 2.1.若安装并使用后因误操作报错时(例如EXCEL打开后未能加载工具菜单),可以卸载后重新安装到另外不同的目录中即可恢复正常.(因微软COM的保护措施而致)! 2.2.建议每天只打开EXCEL主程序一次为宜,保持打开状态不要关闭.(文档则可任意多次打开). 3.1.由于免费标签插件ExcelTab.dll与系统的兼容性问题,安装后在使用过程中若出现屏幕微小抖动或影响正常使用时,请将安装目录Librarys中的ExcelTab.dll 文件改名或删除即可! (不过出现的几率为1%左右). 或者请下载后24小时之内将其删除即可,而不会影响本工具箱的功能! ======================================================================================== EXCEL集成工具箱V8.0增强版修正内容: 1.修正LED时钟自动启动的BUG.在工具箱选项中新增加其开关设定. 2.修正EXCEL2007以上版本中不能手工设定不同工作表网格线颜色的问题. 关闭了原自动设定网格线颜色的功能. 3.改进EXCEL2007及EXCEL2010版本中COM加载时间过长的问题,提升了原版的启动速度. 4.提高程式代码执行与加速功能,实行了程序稳定性与谨慎性测试并通过. 5.新增CheckId()身份证信息查询及验证函数. 6.新增4个皮肤包并修正更换皮肤设置后重启即能生效. 未注册版最多支持30个皮肤包,注册版允许最多皮肤包99个. ========================================================================================= 需知更多请访问官方论坛: Http://exceltools.5d6d.com   作者QQ:1058697543

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧