>백엔드 개발 >C#.Net 튜토리얼 >C#에서 Excel 파일을 생성하고 데이터를 Excel 파일로 내보내는 샘플 코드에 대한 자세한 설명(그림)

C#에서 Excel 파일을 생성하고 데이터를 Excel 파일로 내보내는 샘플 코드에 대한 자세한 설명(그림)

黄舟
黄舟원래의
2017-03-13 17:47:162307검색

도구 자료:

Windows 7, Visual Studio 2010, Microsoft Office 2007

솔루션 만들기

메뉴》New》Project》Windows Forms 애플리케이션:


관련 구성요소 추가:

아래 표시된 대로 두 개의 DataGridView, 하나의 TextBox 및 두 개의 버튼을 추가합니다.


엑셀 리소스 추가:

C#엑셀 파일을 생성합니다. 여기서는 실제로 미리 생성된 엑셀 파일이 리소스에서 추출됩니다. 마지막으로 OleDb 메서드를 사용하여 Excel에 연결하고 Excel 파일에 데이터를 씁니다.

먼저 폴더에 새 Excel 파일을 만들고 Sheet1의 첫 번째 행에 열 이름을 설정합니다.


Double - "Resources.resx" 파일을 클릭하여 리소스 파일 보기를 엽니다.


기존 파일을 추가하고 방금 생성한 Excel 파일을 선택합니다


리소스에서 Excel 파일 추출

            string excelPath = AppDomain.CurrentDomain.BaseDirectory + "Excel" + DateTime.Now.Ticks + ".xlsx";
            if (System.IO.File.Exists(excelPath))
            {
                textBox1.Text += ("文件已经存在!");
                return;
            }

            try
            {
                //从资源中提取Excel文件
                System.IO.FileStream fs = new System.IO.FileStream(excelPath, FileMode.OpenOrCreate);
                fs.SetLength(0);
                fs.Write(Properties.Resources.Excel, 0, Properties.Resources.Excel.Length);
                fs.Close();
                fs.Dispose();
                textBox1.Text = "提取Excel文件成功!" + "\r\n";
            }
            catch (System.Exception ex)
            {
                excelPath = string.Empty;
                textBox1.Text += ("提取Excel文件失败:" + ex.Message);
                textBox1.Text += ("\r\n");
                Application.DoEvents();
                return;
            }

연결 문자열 정의

//定义OleDB连接字符串
            string strConn = "Provider=Microsoft.Ace.OleDb.12.0;Persist Security Info=False;" + "data source=" + @excelPath + ";
            Extended Properties='Excel 12.0; HDR=yes; IMEX=10'";
            OleDbConnection conn = new OleDbConnection();
            conn.ConnectionString = strConn;

참고: 연결 문자열의 IMEX 값은 10입니다. , 1 또는 2인 경우 Insert Into 문을 실행할 때 " 작업은 업데이트 가능한 쿼리 를 사용해야 합니다."라는 오류가 보고됩니다.

dataGridView1에 Excel 파일의 모든 테이블 정보 표시

                DataTable oleDt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                dataGridView1.DataSource = oleDt;
                dataGridView1.Show();

"Sheet1" 테이블에 여러 데이터를 삽입합니다. Excel 테이블에 액세스할 때 뒤에 "$를 추가해야 합니다. 테이블 이름. " 기호가 있는 경우, DataGridView2에 "Sheet1" 테이블의 내용을 표시하기 위해 Insert 문에서 열 이름

                OleDbCommand cmd = null;
                try
                {
                    //向"Sheet1"表中插入几条数据,访问Excel的表的时候需要在表名后添加"$"符号,Insert语句可以不指定列名
                    cmd = new OleDbCommand("Insert Into [Sheet1$] Values('abc', 'bac', '0', '123456', 'test','测试','aa')", conn);//(A,B,C,D,E,F,G) 
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                    cmd.ExecuteNonQuery();
                }
                catch (System.Exception ex)
                {
                    textBox1.Text += ("插入数据失败:" + ex.Message);
                    textBox1.Text += ("\r\n");
                }

를 지정할 필요가 없습니다. Excel 테이블에 액세스할 때 " 테이블 이름 뒤의 $" 기호

                cmd = new OleDbCommand("Select * From [Sheet1$]", conn);
                OleDbDataAdapter adp = new OleDbDataAdapter(cmd);
                DataSet ds = new DataSet();
                adp.Fill(ds);
                dataGridView2.DataSource = ds.Tables[0];

스키마 내용 탐색

                DataTable dt = conn.GetSchema();
                for (int i = 0; i < dt.Columns.Count; i++)
                {
                    textBox1.Text += dt.Columns[i].Caption;
                    if (i + 1 < dt.Columns.Count)
                    {
                        textBox1.Text += ",";
                    }
                }

                for (int j = 0; j < dt.Rows.Count; j++)
                {
                    for (int i = 0; i < dt.Columns.Count; i++)
                    {
                        if (dt.Rows[j][dt.Columns[i]] != null)
                        {
                            textBox1.Text += dt.Rows[j][dt.Columns[i]].ToString();
                        }
                        else
                        {
                            textBox1.Text += "null";
                        }

                        if (i + 1 < dt.Columns.Count)
                        {
                            textBox1.Text += ",";
                        }
                    }
                    textBox1.Text += ("\r\n");
                }

Excel 데이터 연결 닫기

                if (conn.State != ConnectionState.Closed)
                {
                    try
                    {
                        conn.Close();
                    }
                    catch (System.Exception ex)
                    {
                        textBox1.Text += ("关闭Excel数据连接:" + ex.Message);
                        textBox1.Text += ("\r\n");
                    }
                }

파일 디렉터리 열기

System.Diagnostics.Process.Start("explorer.exe", AppDomain.CurrentDomain.BaseDirectory);

위 내용은 C#에서 Excel 파일을 생성하고 데이터를 Excel 파일로 내보내는 샘플 코드에 대한 자세한 설명(그림)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.