首页  >  文章  >  后端开发  >  C#操作EXCEL DataTable转换的实例代码

C#操作EXCEL DataTable转换的实例代码

高洛峰
高洛峰原创
2017-01-18 09:36:581315浏览

//加载Excel  
        public   DataSet LoadDataFromExcel(string filePath) 
        { 
            try
            { 
                string strConn; 
                //strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'"; 
                strConn = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'", filePath); 
                OleDbConnection OleConn = new OleDbConnection(strConn); 
                OleConn.Open(); 
                String sql = "SELECT * FROM  [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等  

                OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn); 
                DataSet OleDsExcle = new DataSet(); 
                OleDaExcel.Fill(OleDsExcle, "Sheet1"); 
                OleConn.Close(); 
                return OleDsExcle; 
            } 
            catch (Exception err) 
            { 

                return null; 
            } 
        } 

        /// <summary> 
        /// DataTable直接导出Excel,此方法会把DataTable的数据用Excel打开,再自己手动去保存到确切的位置 
        /// </summary> 
        /// <param name="dt">要导出Excel的DataTable</param> 
        /// <returns></returns> 
        public bool DoExport(System.Data.DataTable dt) 
        { 
            Microsoft.Office.Interop.Excel.Application app = new ApplicationClass(); 
            if (app == null) 
            { 
                throw new Exception("Excel无法启动"); 
            } 
            app.Visible = true; 
            Workbooks wbs = app.Workbooks; 
            Workbook wb = wbs.Add(Missing.Value); 
            Worksheet ws = (Worksheet)wb.Worksheets[1]; 

            int cnt = dt.Rows.Count; 
            int columncnt = dt.Columns.Count; 

            // *****************获取数据******************** 
            object[,] objData = new Object[cnt + 1, columncnt];  // 创建缓存数据 
            // 获取列标题 
            for (int i = 0; i < columncnt; i++) 
            { 
                objData[0, i] = dt.Columns[i].ColumnName; 
            } 
            // 获取具体数据 
            for (int i = 0; i < cnt; i++) 
            { 
                System.Data.DataRow dr = dt.Rows[i]; 
                for (int j = 0; j < columncnt; j++) 
                { 
                    objData[i + 1, j] = dr[j]; 
                } 
            } 

            //********************* 写入Excel****************** 
            Range r = ws.get_Range(app.Cells[1, 1], app.Cells[cnt + 1, columncnt]); 
            r.NumberFormat = "@"; 
            //r = r.get_Resize(cnt+1, columncnt); 
            r.Value2 = objData; 
            r.EntireColumn.AutoFit(); 

            app = null; 
            return true; 
        }

更多C#操作EXCEL DataTable转换的实例代码相关文章请关注PHP中文网!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn