程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C# Excel文件導入操作

C# Excel文件導入操作

編輯:C#入門知識

C# Excel文件導入操作


Excel文件導出的操作我們經常用到,但是講一個Excel文檔導入並顯示到界面還是第一次用到。

下面簡單介紹下在C#下如何進行Excel文件的導入操作。

首先添加兩個引用

using System.IO;
using System.Data.OleDb;

添加控件openFileDialog

然後我們需要配置Excel的OleDb連接字符串

public const string OledbConnString = "Provider = Microsoft.Jet.OLEDB.4.0 ; Data Source = {0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; //Excel的 OleDb 連接字符串

選擇一個Excel文件
        /// 
        /// 選擇EXCEL
        /// 
        private void btn_BrowserExcel_Click(object sender, EventArgs e)
        {
            DialogResult dr = this.openFileDialog1.ShowDialog();
            if (DialogResult.OK == dr) //判斷是否選擇文件
            {
                this.txtPath.Text = this.openFileDialog1.FileName;
                this.btn_Import.Enabled = true;
            }
        }

執行導入的操作且綁定數據源
        /// 
        /// 執行導入操作
        /// 
        private void btn_Import_Click(object sender, EventArgs e)
        {
            string path = this.txtPath.Text.Trim();
            if (string.IsNullOrEmpty(path))
            {
                MessageBox.Show("請選擇要導入的EXCEL文件。", "信息");
                return;
            }
            if (!File.Exists(path))  //判斷文件是否存在
            {
                MessageBox.Show("信息", "找不到對應的Excel文件,請重新選擇。");
                this.btn_BrowserExcel.Focus();
                return;
            }
            DataTable excelTbl = this.GetExcelTable(path);  //調用函數獲取Excel中的信息
            if (excelTbl == null)
            {
                return;
            }

            DgvImport.DataSource = excelTbl;

        }

最核心的功能在這裡:

        /// 
        /// 獲取Excel文件中的信息,保存到一個DataTable中
        /// 
        /// 文件路徑
        /// 返回生成的DataTable
        private DataTable GetExcelTable(string path)
        {
            try
            {
                //獲取excel數據
                DataTable dt1 = new DataTable("excelTable");
                string strConn = string.Format(OledbConnString, path);
                OleDbConnection conn = new OleDbConnection(strConn);
                conn.Open();
                DataTable dt = conn.GetSchema("Tables");
                //判斷excel的sheet頁數量,查詢第1頁
                if (dt.Rows.Count > 0)
                {
                    string selSqlStr = string.Format("select * from [{0}]", dt.Rows[0]["TABLE_NAME"]);
                    OleDbDataAdapter oleDa = new OleDbDataAdapter(selSqlStr, conn);
                    oleDa.Fill(dt1);
                }
                conn.Close();
                return dt1;
            }
            catch (Exception ex)
            {
                MessageBox.Show("Excel轉換DataTable出錯:" + ex.Message);
                return null;
            }
        }
效果圖:

數據庫查詢數據過程的翻版嗎?

果然知識都是相通的。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved