您的位置:首页 > 编程语言 > C#

用C#生成n条不重复的n位验证码

2016-01-19 15:38 696 查看

例:生成10条不重复的8位验证码

需要添加的引用

using Microsoft.Office.Interop;

using Microsoft.Office.Interop.Excel;

注意:直接引用要报错需要在>添加引用>COM下面添加Microsoft Excel 12.0 Object Library引用

代码块

//生成10条不重复的8位验证码
var App = new Microsoft.Office.Interop.Excel.Application();
Object oMissing = System.Reflection.Missing.Value;
Workbook workBook = App.Workbooks.Add(oMissing);
Worksheet sheet = (Worksheet)workBook.Sheets[1];
sheet.Cells[1, 1] = "Number";//默认添加第一行的列头
char[] constant = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G',
'H', 'I', 'J', 'K', 'L', 'M', 'N','O','P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' };//需要随机的字符集合
System.Data.DataTable tempTable = new System.Data.DataTable();
tempTable.Columns.Add("Number");//给datatable添加一个名为Number的列
tempTable.PrimaryKey = new DataColumn[] { tempTable.Columns["Number"] };//为datatable设置主键
int y = 0;//计数的变量
DateTime dt1 = DateTime.Now;//记一下时间
while (tempTable.Rows.Count < 10)
{
//生成随机数
StringBuilder newRandom = new StringBuilder(8);
Random rd = new Random();
for (int i = 0; i < 8; i++)
{
newRandom.Append(constant[rd.Next(36)]);//将随机生成的这个字符
}
//这个判断是防止重复的
if (tempTable == null || tempTable.Rows.Find(newRandom.ToString()) == null)
{
y++;//这个只是个计数器,计算生成了多少个码
DataRow row = tempTable.NewRow(); //创建一个DataRow对象
row["Number"] = newRandom.ToString();//一定要在一开始创建 table.Columns.Add("StartTelNum");
tempTable.Rows.Add(row);// NewRow只是创建,没有插入
}
}
//将datatable里面的每一条数据都放进sheet工作薄里面
for (int i = 0; i < tempTable.Rows.Count; i++)
{
for (int j = 0; j < tempTable.Columns.Count; j++)
{
sheet.Cells[i + 2, j + 1] = tempTable.Rows[i][j].ToString();
}
}
//保存excel
sheet.SaveAs(@"G:\ws\ESM.xlsx", Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing,
XlSaveAsAccessMode.xlNoChange, Type.Missing, Type.Missing, Type.Missing);
workBook.Close(false, Type.Missing, Type.Missing);//反正没有这句话要报错
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: