JY Tech

윈폼으로 설문조사 결과산출 프로그램 만들기(6) 본문

Programming/MiniProject

윈폼으로 설문조사 결과산출 프로그램 만들기(6)

J.Dragon 2023. 6. 17. 17:13

이번 시간에는 dataGridView에 입력한 내용들을 엑셀로 저장하는 기능을 구현할 것이다.

윈폼에서 엑셀을 연동하기 위해서는 패키지를 설치해야 한다.

 

화면 우측의 [참조]를 우클릭하고 [NuGet 패키지 관리] 를 클릭한다

 

찾아보기 에서 excel을 검색하고

이걸 설치하면 된다.

 

ProMode의 엑셀로저장 버튼을 클릭 해 이벤트를 만들어주고 다음과 같이 코드가 구성되도록 한다

private void button2_Click(object sender, EventArgs e)
{
	ExportToExcel(); //클릭 이벤트에 있어야 하는 코드
}

이제 ExportToExcel()을 만들어준면 된다.

 

private void ExportToExcel()
        {
            bool IsExport = false;
            // Creating a Excel object.
            Microsoft.Office.Interop.Excel._Application excel = new Microsoft.Office.Interop.Excel.Application();
            Microsoft.Office.Interop.Excel._Workbook workbook = excel.Workbooks.Add(Type.Missing);
            Microsoft.Office.Interop.Excel._Worksheet worksheet = null;
            try
            {
                worksheet = workbook.ActiveSheet;
                int cellRowIndex = 1;
                int cellColumnIndex = 1;
                for (int col = 0; col < dataGridView1.Columns.Count; col++)
                {
                    if (cellRowIndex == 1)
                    {
                        worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Columns[col].HeaderText;
                    }
                    cellColumnIndex++;
                }
                cellColumnIndex = 1;
                cellRowIndex++;
                for (int row = 0; row <= dataGridView1.Rows.Count - 1; row++)
                {
                    for (int col = 0; col < dataGridView1.Columns.Count; col++)
                    {
                        worksheet.Cells[cellRowIndex, cellColumnIndex] = dataGridView1.Rows[row].Cells[col].Value.ToString();
                        cellColumnIndex++;
                    }
                    cellColumnIndex = 1;
                    cellRowIndex++;
                }
                SaveFileDialog saveFileDialog = GetExcelSave();
                if (saveFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
                {
                    workbook.SaveAs(saveFileDialog.FileName);
                    MessageBox.Show("데이터가 성공적으로 저장되었습니다");
                    IsExport = true;
                }
                //Export 성공 했으면 객체들 해제
                if (IsExport)
                {
                    workbook.Close();
                    excel.Quit();
                    workbook = null;
                    excel = null;
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
        private SaveFileDialog GetExcelSave()
            {
                SaveFileDialog saveDialog = new SaveFileDialog();
                saveDialog.CheckPathExists = true;
                saveDialog.AddExtension = true;
                saveDialog.ValidateNames = true;
                saveDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
                saveDialog.DefaultExt = ".xlsx";
                saveDialog.Filter = "Microsoft Excel Workbook (*.xls)|*.xlsx";
                saveDialog.FileName = "Data Analyze".ToString(); //엑셀로 저장할 때 기본 파일이름
                return saveDialog;
            }

위의 코드는 dataGridView의 내용을 엑셀로 내보내고 저장하는 코드다.

사실 다른 코드와 달리 위 코드는 프로그램을 만들었을 당시에 구글링을 하다가 찾은 코드에 아주 살짝만 수정한건데 출처를 못찾았다..(출처를 찾으면 수정)

 

다음포스팅에서는 메인화면(Form1)의 ui를 수정하고 exe로 만들어 배포하는 방법을 알아볼 것이다.