您现在的位置是:首页 > 文章详情文章详情

C#Excel导出DataSet

会飞的猪 2017-10-16 725人已围观

简介白码驿站是一个面向开发者的知识共享社区,专注于为开发者打造一个纯净的技术交流社区(源码下载,免费在线图片压缩,jquery插件,插件下载,JS/CSS在线压缩。)-白码驿站

Excel导出DataSet

                                        
        /// <summary>
        /// Excel导出DataSet
        /// </summary>
        /// <param name="strFileName">文件名</param>
        /// <param name="isExcelTemp">是否ExcelTemp页面</param>
        /// <returns></returns>
        public static DataSet ExcelToDataSet(string strFileName, bool isExcelTemp)
        {
            //HDR=Yes,这代表第一行是标题,不做为数据使用 ,如果用HDR=NO,则表示第一行不是标题,做为数据来使用。系统默认的是YES
            //当 IMEX=0 时为“汇出模式”,这个模式开启的 Excel 档案只能用来做“写入”用途。
            //当 IMEX=1 时为“汇入模式”,这个模式开启的 Excel 档案只能用来做“读取”用途。
            //当 IMEX=2 时为“连結模式”,这个模式开启的 Excel 档案可同时支援“读取”与“写入”用途。
            //string config1 = "Provider = Microsoft.ACE.OLEDB.12.0 ; Extended Properties=\"Excel 8.0;HDR=Yes;\"; Data Source ={0};";
            //string config2 = "Provider = Microsoft.ACE.OLEDB.12.0 ; Extended Properties=\"Excel 12.0;HDR=Yes;\"; Data Source ={0};";
            string config1 = "Provider = Microsoft.ACE.OLEDB.12.0 ; Extended Properties=\"Excel 8.0;HDR=Yes;IMEX=1\"; Data Source ={0};";
            string config2 = "Provider = Microsoft.ACE.OLEDB.12.0 ; Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\"; Data Source ={0};";
            string fileExtension = System.IO.Path.GetExtension(strFileName);
            string strCon = "";
            switch (fileExtension)
            {
                case ".xls":
                    strCon = string.Format(config1, strFileName);
                    break;
                case ".xlsx":
                    strCon = string.Format(config2, strFileName);
                    break;
            }

            OleDbConnection myConn = new OleDbConnection(strCon);

            myConn.Open();

            DataTable schemaTable = myConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new Object[] { null, null, null, "TABLE" });
            OleDbDataAdapter myCommand;
            DataSet myDataSet = new DataSet();
            for (int i = 1; i <= schemaTable.Rows.Count; i++)
            {
                DataRow dr = schemaTable.Rows[i - 1];
                string tablename = dr[2].ToString().Trim();

                if (tablename.Contains("$"))
                {
                    myCommand = new OleDbDataAdapter("select * from [" + tablename + "]", myConn);
                    try
                    {
                        if (tablename.ToLower().Contains("cn")) //取包含cn的Sheet
                        {
                            DataTable a = new DataTable();
                            a.TableName = "_tmp_imp_" + tablename.Trim('\'').Trim('$');

                            myCommand.Fill(a);

                            myDataSet.Tables.Add(a);
                        }

                    }
                    catch
                    { }
                }
            }
            myConn.Close();
            return myDataSet;
        }
                                


Tags: C# 、 Excel操作

很赞哦! (0)

评 论

系统处理中...