⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 form1.cs

📁 本软件是为南开大学体育部开发的,作为跆拳道比赛分组,分级别的小工具.在程序中导入Excel格式的文件,文件中是比赛运动员的相关信息.按设置场地要求自动生成比赛对阵图(word格式)和对阵表(Excel
💻 CS
📖 第 1 页 / 共 3 页
字号:

                        ReplaceWith = ((Infor)GroupInfors[i]).Name + " " + ((Infor)GroupInfors[i]).Unit;
                        if (PlayerIndex > HalfNumPlayer)
                        {
                            int rival = HalfNumPlayer * 2 - PlayerIndex ;
                            int Sequ0 = GetSequence(PlayerIndex, HalfNumPlayer);//在文件中的标识 #Sequ0#
                            LSequ[lsIndex++] = Sequ0;

                            string red = CurrentLevelInfors[rival].ToString();
                            string green = ReplaceWith.ToString();
                            myToExcelInfor = new ToExcelInfor(ToExcelGroup, ToExcelLevel, red, green);
                            ToExcelInfor.Add(myToExcelInfor);

                        }
                        //替换姓名
                        TheWordApp.Selection.Find.Execute(ref FindText, ref MatchCase, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref ReplaceWith, ref Replace, ref missing, ref missing, ref missing, ref missing);
                        CurrentLevelInfors.Add(ReplaceWith);//只存储名字和单位


                    }
                    SortSequence(LSequ,ToExcelInfor);
                    
                    for (i = 0; i < LSequ.Length; i++)//替换场次
                    {
                        findText = "#" + LSequ[i].ToString()+ "#";
                        FindText = findText;
                        ReplaceWith =FieldName+ (i + 1+preDual).ToString();
                        ((ToExcelInfor)ToExcelInfor[i]).Sequence = ReplaceWith.ToString();
                        TheWordApp.Selection.Find.Execute(ref FindText, ref MatchCase, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref ReplaceWith, ref Replace, ref missing, ref missing, ref missing, ref missing);
                    }
                    if (!HasCreateWord)
                    {
                        OutputInfors[fieldIndex].AddRange(ToExcelInfor);
                    }
                    preDual += nDual;
                    SortedLevel[maxIndex] = true;

                    //清空多余的符号
                    ReplaceWith = "";
                    for (i = PlayerIndex; i <= HalfNumPlayer * 2; i++)
                    {
                        findText = "@" +i.ToString()+ "@";
                        FindText = findText;
                        TheWordApp.Selection.Find.Execute(ref FindText, ref MatchCase, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref ReplaceWith, ref Replace, ref missing, ref missing, ref missing, ref missing);
                    }
                    for (i = 1; i <= HalfNumPlayer; i++)
                    {
                        findText = "#" + i.ToString() + "#";
                        FindText = findText;
                        TheWordApp.Selection.Find.Execute(ref FindText, ref MatchCase, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref ReplaceWith, ref Replace, ref missing, ref missing, ref missing, ref missing);
                    }

                    object FileName = FolderPath + "\\" + "场地" + FieldName + ToExcelGroup + ToExcelLevel + "级别("+FileIndex.ToString()+")";
                    FileIndex++;
                    doc.SaveAs(ref FileName, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing);
                    doc.Close(ref missing, ref missing, ref missing);
                }

            }     
        }
        private void OutPutToExcel(int[,] Group,int fieldIndex)
        {
            if (OutputInfors[fieldIndex].Count == 0) return;
            string FieldName=Convert.ToChar(fieldIndex + 65).ToString();
            TheResultsheet.get_Range("A" + iCurrentRow, missing).Value2 = FieldName + "场地";
            iCurrentRow++;
       
            for (int i = 0; i < OutputInfors[fieldIndex].Count; i++)
            {
                TheResultsheet.get_Range("A" + iCurrentRow, missing).Value2 = ((ToExcelInfor)OutputInfors[fieldIndex][i]).Group;
                TheResultsheet.get_Range("B" + iCurrentRow, missing).Value2 = ((ToExcelInfor)OutputInfors[fieldIndex][i]).Level;
                TheResultsheet.get_Range("C" + iCurrentRow, missing).Value2 = ((ToExcelInfor)OutputInfors[fieldIndex][i]).Sequence;
                TheResultsheet.get_Range("D" + iCurrentRow, missing).Value2 = ((ToExcelInfor)OutputInfors[fieldIndex][i]).Red;
                TheResultsheet.get_Range("E" + iCurrentRow, missing).Value2 = "VS";
                TheResultsheet.get_Range("F" + iCurrentRow, missing).Value2 = ((ToExcelInfor)OutputInfors[fieldIndex][i]).Green;
                iCurrentRow++;
           
            }

        }
       
        private void CreateWordThread(object o)
        {
            stateLabel.Text = "正在生成Word图,请稍候...";

            Merge();
            string sPath = o.ToString();
            
            for (int i = 0; i < iNumField; i++)
            {
                if (((int[,])GroupMerge[i]).Length == 0) { continue; }
                int[,] Group = (int[,])GroupMerge[i];

                OutPutToWord(ref InforsMerge[i], Group, i, sPath);
                Thread.Sleep(500);
            }
            HasCreateWord = true;
            stateLabel.Text = "成功生成比赛图!";
            TheWordApp.Quit(ref missing, ref missing, ref missing);
        }

        private void CreateWord()
        {
            if (!ImportData) return;
            if (SetField == false)
            {
                MessageBox.Show("请设置场地!");
                return;
            }
            try
            {
                TheWordApp = new Word.Application();//新开一个WORD程序
                TheWordApp.Visible = false;//程序不可见
            }
            catch
            {
                MessageBox.Show("打开Word程序失败!");
                return;
            }
            try
            {
                if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
                {
                    Thread WordThread = new Thread(new ParameterizedThreadStart(CreateWordThread));
                    WordThread.Start(folderBrowserDialog.SelectedPath.ToString());
                   
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("生成比赛对阵图时发生异常\n" + "异常信息:" + ex.Message);
                TheWordApp.Quit(ref missing, ref missing, ref missing);
            }
        }

        private void CreateExcelThread(object o)
        {
            stateLabel.Text = "正在生成Excel表,请稍候...";

            string excelFileName = o.ToString();
            iCurrentRow = 2;
            for (int i = 0; i < iNumField; i++)
            {
                if (((int[,])GroupMerge[i]).Length == 0) { continue; }
                int[,] Group = (int[,])GroupMerge[i];
                OutPutToExcel(Group, i);

            }


            WorksheetCopy = (Excel.Worksheet)TheExcelApp.Workbooks.Add(Type.Missing).Sheets[1];
            for (int i = 1; i <= TheResultsheet.UsedRange.Rows.Count; i++)//将控件中内容复制到Sheet[1]
            {
                WorksheetCopy.get_Range("A" + i, missing).Value2 = TheResultsheet.get_Range("A" + i, missing).Value2;
                WorksheetCopy.get_Range("B" + i, missing).Value2 = TheResultsheet.get_Range("B" + i, missing).Value2;
                WorksheetCopy.get_Range("C" + i, missing).Value2 = TheResultsheet.get_Range("C" + i, missing).Value2;
                WorksheetCopy.get_Range("D" + i, missing).Value2 = TheResultsheet.get_Range("D" + i, missing).Value2;
                WorksheetCopy.get_Range("E" + i, missing).Value2 = TheResultsheet.get_Range("E" + i, missing).Value2;
                WorksheetCopy.get_Range("F" + i, missing).Value2 = TheResultsheet.get_Range("F" + i, missing).Value2;

            }


            WorksheetCopy.SaveAs(excelFileName, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            TheExcelApp.ActiveWorkbook.Close(missing, missing, missing);
            stateLabel.Text = "成功生成比赛表!";
        }

        private void CreateExcel()
        {
            try
            {
                if (!ImportData) return;
                if (!SetField)
                {
                    MessageBox.Show("请设置场地!");
                    return;

                }
                if (!HasCreateWord)
                {
                    MessageBox.Show("请先生成Word对阵图!");
                    return;
                }
                InitResultSheet();
                if (dlgCreateExcel.ShowDialog() == DialogResult.OK)
                {
                    Thread ExcelThread = new Thread(new ParameterizedThreadStart(CreateExcelThread));
                    ExcelThread.Start((object)dlgCreateExcel.FileName);               
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("生成比赛图时发生异常\n" + "异常信息:" + ex.Message);
            }

        }
        
        private void OpenExcelThread(object filename)
        {

            Excel.Workbook TheBook = null;
            try
            {
                TheBook = TheExcelApp.Workbooks.Open(filename.ToString(), missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing);//打开文件名对应的工作簿
            }
            catch
            {
                MessageBox.Show("导入Excel文件出错!");
                this.Close();
                return;

            }
            stateLabel.Text = "正在导入Excel文件,请稍候...";
            TheSheet = (Excel.Worksheet)TheExcelApp.ActiveWorkbook.Sheets[1];//取当前活动工作簿的第一个工作页


            for (int i = 2; i <= TheSheet.UsedRange.Rows.Count; i++)
            {//把打开的Sheet中的内容复制到控件中
                TheWorksheet.get_Range("A" + i, missing).Value2 = TheSheet.get_Range("A" + i, missing).Value2;
                TheWorksheet.get_Range("B" + i, missing).Value2 = TheSheet.get_Range("B" + i, missing).Value2;
                TheWorksheet.get_Range("C" + i, missing).Value2 = TheSheet.get_Range("C" + i, missing).Value2;
                TheWorksheet.get_Range("D" + i, missing).Value2 = TheSheet.get_Range("D" + i, missing).Value2;
                TheWorksheet.get_Range("E" + i, missing).Value2 = TheSheet.get_Range("E" + i, missing).Value2;

            }
            TheBook.Close(missing, missing, missing);
            stateLabel.Text = "完成.";
            InitData();
            this.axSpreadsheet.Caption = dlgOpenFile.FileName;
            ImportData = true;
        
        }

        private void SaveAsThread(object o)
        {
            stateLabel.Text = "正在保存当前Sheet中的数据...";
            string filename = o.ToString();
            WorksheetCopy = (Excel.Worksheet)TheExcelApp.Workbooks.Add(Type.Missing).Sheets[1];
            OWC11.Worksheet curSheet=(OWC11.Worksheet)this.axSpreadsheet.ActiveSheet;
            for (int i = 1; i <= curSheet.UsedRange.Rows.Count; i++)//将控件中内容复制到Sheet[1]  TheWorksheet
            {
                WorksheetCopy.get_Range("A" + i, missing).Value2 = curSheet.get_Range("A" + i, missing).Value2;
                WorksheetCopy.get_Range("B" + i, missing).Value2 = curSheet.get_Range("B" + i, missing).Value2;
                WorksheetCopy.get_Range("C" + i, missing).Value2 = curSheet.get_Range("C" + i, missing).Value2;
                WorksheetCopy.get_Range("D" + i, missing).Value2 = curSheet.get_Range("D" + i, missing).Value2;
                WorksheetCopy.get_Range("E" + i, missing).Value2 = curSheet.get_Range("E" + i, missing).Value2;

            }

            WorksheetCopy.SaveAs(filename, missing, missing, missing, missing, missing, missing, missing, missing, missing);
            TheExcelApp.ActiveWorkbook.Close(missing, missing, missing);
            stateLabel.Text = "保存完成.";
            
        }
        #endregion

        #region 事件响应函数
        private void wordToolStripMenuItem_Click(object sender, EventArgs e)//生成Word图
        {
            CreateWord();
        }
        private void excelToolStripMenuItem_Click(object sender, EventArgs e)//生成Excel表
        {

            CreateExcel();
        }
        private void CreateExcel_Click(object sender, EventArgs e)//生成Excel表,对应"生成比赛表"按钮
        {
            CreateExcel();
        }
        private void MenuItemNew_Click(object sender, EventArgs e)
        {

            InitSpreadsheet();
            InitData();
        }
        private void MenuItemOpen_Click(object sender, EventArgs e)//打开Excel文件
        {

            if (dlgOpenFile.ShowDialog() == DialogResult.OK)
            {
              
                Thread openExcelThread = new Thread(new ParameterizedThreadStart(OpenExcelThread));
                object fileName = dlgOpenFile.FileName;
                openExcelThread.Start(fileName);  

            }

        }
        private void MenuItemSaveAs_Click(object sender, EventArgs e)//另存为函数
        {

            if (dlgSaveAsExcelFile.ShowDialog() == DialogResult.OK)
            {
                Thread saveAsThread = new Thread(new ParameterizedThreadStart(SaveAsThread));
                saveAsThread.Start((object)dlgSaveAsExcelFile.FileName);
            }
        }
        private void MenuItemAbout_Click(object sender, EventArgs e)
        {
            AboutDialog myAbout = new AboutDialog();
            myAbout.ShowDialog();
        }
        private void MainForm_Load(object sender, EventArgs e)
        {
            InitControl();
        }
        private void MenuItemExit_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        private void tB_NumField_TextChanged(object sender, EventArgs e)//当文本框中内容改时响应函数
        {
            if (tB_NumField.Text != "")
            {
                iNumField = Convert.ToInt32(tB_NumField.Text);//把字符串转化为整数
            }
            else
            {
                iNumField = 0;
            }
        }
        private void CreateWord_Click(object sender, EventArgs e)//生成Word图,对应"生成比赛图"按钮
        {
            CreateWord();
        }
        private void MainForm_FormClosing(object sender, FormClosingEventArgs e)//关闭应用程序的响应函数中关闭WORD.EXCEL 程序
        {
            CloseControl();
        }
        #endregion
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -