C#建立Excel檔案並將資料匯出到Excel檔案的範例程式碼詳解

來源:互聯網
上載者:User

工具原料:

Windows 7,Visual Studio 2010, Microsoft Office 2007

建立解決方案

菜單》建立》項目》Windows表單應用程式:


添加相關組件:

添加兩個DataGridView,一個TextBox,兩個按鈕 ,如:


添加Excel資源:

C#建立Excel檔案,這裡實際上是從資源中提取一個事先建立好的Excel檔案,檔案提取成功後,使用OleDb方法串連Excel,向Excel檔案中寫入資料。

先在檔案夾中建立一個Excel檔案,在Sheet1表的第一行設定列名:


雙擊“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的表的時候需要在表名後添加"$"符號,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");                }

在dataGridView2中顯示表"Sheet1"的內容,訪問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];

遍曆Schema的內容

                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);
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.