設計背景
設置一個Excel名單表,對名單進行隨機抽取。
設計思路
使用Timer定時器,運行定時器進行名單隨機滾動,停止定時器獲得抽簽結果
相關技術
- 隨機數
- Excel讀取/導出
- XML文檔讀寫
相關類庫
C1.C1Excel Excel操作相關
功能
- 讀取Excel名單
- 名單隨機抽簽
- 評分功能
- Excel導出功能
代碼示例
- 導入名單
using (System.Windows.Forms.OpenFileDialog dialog = new OpenFileDialog())
{
dialog.InitialDirectory = Application.StartupPath;
dialog.Filter = "Excel文件(*.xls)|*.xls";
dialog.CheckFileExists = true;
if (dialog.ShowDialog(this) == System.Windows.Forms.DialogResult.OK)
{
this.txtList.Text = dialog.FileName;
this.dt = ImportExcel(dialog.FileName, false, false);
}
}
- 隨機抽簽
Random rd = new Random();
this.lbShow.Text = this.dt.Rows[rd.Next(1, this.dt.Rows.Count)][0].ToString();
- 評分導出
string apppath = Application.ExecutablePath;
apppath = apppath.Substring(0, apppath.LastIndexOf("\\"));
if (File.Exists(apppath + "\\Evaluation.xml"))
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(apppath + "\\Evaluation.xml");
XmlNodeList nodeList = xmlDoc.SelectNodes("//Evaluation//Evaluation");
DataTable dt = new DataTable();
dt.Columns.Add("姓名");
dt.Columns.Add("評分");
dt.Columns.Add("時間");
for (int i = 0; i < nodeList.Count; i++)
{
DataRow dr = dt.NewRow();
XmlElement xe = (XmlElement)nodeList[i];
dr[0] = ((XmlElement)xe.SelectNodes("//Evaluation//Name")[i]).InnerText;
dr[1] = ((XmlElement)xe.SelectNodes("//Evaluation//Points")[i]).InnerText;
dr[2] = ((XmlElement)xe.SelectNodes("//Evaluation//Time")[i]).InnerText;
dt.Rows.Add(dr);
}
ExportTo("Evaluation", "Evaluation", dt);
MessageBox.Show("導出評分表將刪除評分記錄,請自行保存!");
File.Delete(apppath + "\\Evaluation.xml");
}
else
{
MessageBox.Show("無評分記錄!");
}