亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

[WinForm]項目開發中Excel使用小計

2019-11-14 16:45:18
字體:
來源:轉載
供稿:網友

實際項目開發中,所涉及的Excel會比較復雜,而且列中會帶有一些計算公式,這給讀取帶來困難,嘗試過一些免費的第三方dll,譬如Myxls,NPOI,IExcelDataReader都會出現一些問題,最后采用OLEDB形式讀取,再x64操作系統上有點問題,不過采用小技巧即可解決,參考鏈接:Connecting to Excel and access Files using .Net on a 64-bit Server

封裝代碼:

namespace DBUtilHelpV2{    public class OLEDBExcelToolV2    {        static readonly string xls = ".xls";        static readonly string xlsx = ".xlsx";        string _ExcelExtension = string.Empty;//后綴        string _ExcelPath = string.Empty;//路徑        string _ExcelConnectString = string.Empty;//鏈接字符串        static bool _X64Version = false;//是否強制使用x64鏈接字符串,即xlsx形式        public OLEDBExcelToolV2(string excelPath, bool x64Version)        {            if (string.IsNullOrEmpty(excelPath))                throw new ArgumentNullException("excelPath");            if (!File.Exists(excelPath))                throw new ArgumentException("excelPath");            string _excelExtension = Path.GetExtension(excelPath);            _ExcelExtension = _excelExtension.ToLower();            _ExcelPath = excelPath;            _X64Version = x64Version;            _ExcelConnectString = BuilderConnectionString();        }        /// <summary>        /// 創建鏈接字符串        /// </summary>        /// <returns></returns>        PRivate string BuilderConnectionString()        {            Dictionary<string, string> _connectionParameter = new Dictionary<string, string>();            if (!_ExcelExtension.Equals(xlsx) && !_ExcelExtension.Equals(xls))            {                throw new ArgumentException("excelPath");            }            if (!_X64Version)            {                if (_ExcelExtension.Equals(xlsx))                {                    // XLSX - Excel 2007, 2010, 2012, 2013                    _connectionParameter["Provider"] = "Microsoft.ACE.OLEDB.12.0;";                    _connectionParameter["Extended Properties"] = "'Excel 12.0 xml;IMEX=1'";                }                else if (_ExcelExtension.Equals(xls))                {                    // XLS - Excel 2003 and Older                    _connectionParameter["Provider"] = "Microsoft.Jet.OLEDB.4.0";                    _connectionParameter["Extended Properties"] = "'Excel 8.0;IMEX=1'";                }            }            else            {                _connectionParameter["Provider"] = "Microsoft.ACE.OLEDB.12.0;";                _connectionParameter["Extended Properties"] = "'Excel 12.0 XML;IMEX=1'";            }            _connectionParameter["Data Source"] = _ExcelPath;            StringBuilder _connectionString = new StringBuilder();            foreach (KeyValuePair<string, string> parameter in _connectionParameter)            {                _connectionString.Append(parameter.Key);                _connectionString.Append('=');                _connectionString.Append(parameter.Value);                _connectionString.Append(';');            }            return _connectionString.ToString();        }        /// <summary>        /// Excel操作        /// DELETE不支持        /// </summary>        /// <param name="sql"></param>        /// <returns></returns>        public int ExecuteNonQuery(string sql)        {            int _affectedRows = -1;            using (OleDbConnection sqlcon = new OleDbConnection(_ExcelConnectString))            {                try                {                    sqlcon.Open();                    using (OleDbCommand sqlcmd = new OleDbCommand(sql, sqlcon))                    {                        _affectedRows = sqlcmd.ExecuteNonQuery();                    }                }                catch (Exception)                {                    return -1;                }            }            return _affectedRows;        }        /// <summary>        /// Excel操作        ///獲取EXCEL內sheet集合        /// </summary>        /// <param name="sql"></param>        /// <returns></returns>        public string[] GetExcelSheetNames()        {            DataTable _schemaTable = null;            using (OleDbConnection sqlcon = new OleDbConnection(_ExcelConnectString))            {                try                {                    sqlcon.Open();                    _schemaTable = sqlcon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                    String[] _excelSheets = new String[_schemaTable.Rows.Count];                    int i = 0;                    foreach (DataRow row in _schemaTable.Rows)                    {                        _excelSheets[i] = row["TABLE_NAME"].ToString().Trim();                        i++;                    }                    return _excelSheets;                }                catch (Exception)                {                    return null;                }                finally                {                    if (_schemaTable != null)                    {                        _schemaTable.Dispose();                    }                }            }        }        /// <summary>        /// 讀取sheet        /// eg:select * from [Sheet1$]        /// </summary>        /// <param name="sql"></param>        /// <returns></returns>        public DataTable ExecuteDataTable(string sql)        {            using (OleDbConnection sqlcon = new OleDbConnection(_ExcelConnectString))            {                try                {                    using (OleDbCommand sqlcmd = new OleDbCommand(sql, sqlcon))                    {                        using (OleDbDataAdapter sqldap = new OleDbDataAdapter(sqlcmd))                        {                            DataTable _dtResult = new DataTable();                            sqldap.Fill(_dtResult);                            return _dtResult;                        }                    }                }                catch (Exception)                {                    return null;                }            }        }        /// <summary>        /// 獲取excel所有sheet數據        /// </summary>        /// <returns>DataSet</returns>        public DataSet ExecuteDataSet()        {            DataSet _excelDb = null;            using (OleDbConnection sqlcon = new OleDbConnection(_ExcelConnectString))            {                try                {                    sqlcon.Open();                    DataTable _schemaTable = sqlcon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);                    if (_schemaTable != null)                    {                        int i = 0;                        _excelDb = new DataSet();                        foreach (DataRow row in _schemaTable.Rows)                        {                            string _sheetName = row["TABLE_NAME"].ToString().Trim();                            string _sql = string.Format("select * from [{0}]", _sheetName);                            using (OleDbCommand sqlcmd = new OleDbCommand(_sql, sqlcon))                            {                                using (OleDbDataAdapter sqldap = new OleDbDataAdapter(sqlcmd))                                {                                    DataTable _dtResult = new DataTable();                                    _dtResult.TableName = _sheetName;                                    sqldap.Fill(_dtResult);                                    _excelDb.Tables.Add(_dtResult);                                }                            }                            i++;                        }                    }                }                catch (Exception)                {                    return null;                }            }            return _excelDb;        }    }}
代碼使用
        /// <summary>        /// 合并EXCEL數據        /// </summary>        /// <param name="_excelPath">excel路徑</param>        private void HandleMergeExcel(string _excelPath)        {            if (!string.IsNullOrEmpty(_excelPath))            {                OLEDBExcelToolV2 _excelHelper = new OLEDBExcelToolV2(_excelPath, true);                DataSet _excelSource = _excelHelper.ExecuteDataSet();                HandleExcelSource(_excelSource);            }        }

若在x64操作系統,將第二個參數設置true,并且按照AccessDatabaseEngine_X64.exe即可正常讀取

代碼效果

無標題


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲欧美中文日韩在线| 久久久久五月天| 亚洲美女av网站| 亚洲视频在线免费观看| 欧美激情一区二区久久久| 午夜精品三级视频福利| 中文字幕亚洲天堂| 久久久久久亚洲精品不卡| 欧美整片在线观看| 欧美专区日韩视频| 亚洲电影免费观看高清完整版在线观看| 91国自产精品中文字幕亚洲| 亚洲第一男人av| 国产一区二区三区三区在线观看| 国产在线视频不卡| 91亚洲精品久久久久久久久久久久| 欧美老女人性视频| 欧美黄色成人网| 久久久精品电影| 亚洲精美色品网站| 国模吧一区二区三区| 国产成人福利夜色影视| 中文字幕日韩欧美在线视频| xxxx欧美18另类的高清| 97碰碰碰免费色视频| 国产极品精品在线观看| 欧美激情视频网| 日本国产高清不卡| 日韩精品中文在线观看| 成人免费观看49www在线观看| 国产精品视频久久久久| 日韩精品免费在线视频| 亚洲高清免费观看高清完整版| 欧美中在线观看| 97超碰蝌蚪网人人做人人爽| 亚洲国产精品久久久久| 2020欧美日韩在线视频| 欧美色欧美亚洲高清在线视频| 日本高清视频精品| 成人有码视频在线播放| 国产精品欧美一区二区三区奶水| 欧美理论电影在线播放| 日韩一二三在线视频播| 俺也去精品视频在线观看| 欧美xxxx14xxxxx性爽| 欧美在线欧美在线| 国产免费成人av| 91在线视频一区| 国产精品久久久久福利| 欧美俄罗斯性视频| 日韩视频在线一区| 在线电影欧美日韩一区二区私密| 国产亚洲精品久久久久久牛牛| 久久久久久久999| www.久久草.com| 国产精品美腿一区在线看| 亚洲人成欧美中文字幕| 国产精品户外野外| 欧美在线视频观看| 欧美性受xxxx白人性爽| 成人激情视频小说免费下载| 在线看国产精品| 有码中文亚洲精品| 欧美激情一区二区三区成人| 91精品久久久久久久久久久久久久| 久久人人爽人人爽人人片av高请| 视频在线一区二区| 91麻豆国产语对白在线观看| 一色桃子一区二区| 欧美日韩国产va另类| 国产亚洲欧美日韩精品| 国内精品久久久久久久| 亚洲欧美一区二区精品久久久| 久久69精品久久久久久久电影好| 亚洲a成v人在线观看| 亚洲色图美腿丝袜| 日韩欧美黄色动漫| 国产精品大片wwwwww| 亚洲大胆人体av| 亚洲欧洲中文天堂| 亚洲精品电影网在线观看| 国产激情视频一区| 亚洲人午夜精品免费| 日本午夜精品理论片a级appf发布| 三级精品视频久久久久| 欧美日韩美女视频| 久久久久久亚洲精品中文字幕| 久久久这里只有精品视频| 国产成人久久久精品一区| 亚洲最大成人免费视频| 久久99精品视频一区97| 国产精品成人观看视频国产奇米| 欧美激情乱人伦一区| 色综合天天狠天天透天天伊人| 日韩av在线免费播放| 97久久精品人搡人人玩| 国外成人免费在线播放| 亚洲成人a**站| 欧洲成人午夜免费大片| 欧美日韩精品在线| 久久久国产精品一区| 懂色av影视一区二区三区| 中文字幕精品在线| 伦理中文字幕亚洲| 欧洲一区二区视频| 国产精品亚洲自拍| 中文字幕一区日韩电影| 欧美电影院免费观看| 91在线观看欧美日韩| 欧美日韩国产页| 91精品国产综合久久香蕉922| 26uuu国产精品视频| 国产一区二区三区在线观看视频| 精品日韩视频在线观看| 亚洲精品日韩久久久| 92国产精品视频| 亚洲欧美国产va在线影院| 亚洲偷欧美偷国内偷| 亚洲国产另类 国产精品国产免费| 日韩免费精品视频| 欧美精品一区二区免费| 8x海外华人永久免费日韩内陆视频| 国产99久久精品一区二区永久免费| 国产成人精品在线| 亚洲欧美日韩国产精品| 欧美黑人狂野猛交老妇| 欧美日韩国产中文精品字幕自在自线| 国产精品久久电影观看| 亚洲免费中文字幕| 国产精品色视频| 日本亚洲欧美三级| 欧美大片在线看免费观看| 97精品伊人久久久大香线蕉| 国产精品自产拍在线观看| 国产成人精品a视频一区www| 亚洲free性xxxx护士hd| 日韩成人激情在线| 精品视频久久久| 日韩一区二区在线视频| 欧美日韩亚洲一区二区| 成人国产精品一区| 日韩中文在线中文网三级| 国产精品福利网站| 亚洲成色www8888| 久久国产天堂福利天堂| 国产精品三级久久久久久电影| 亚洲欧洲在线免费| 日韩av成人在线观看| 国产精品国产三级国产专播精品人| 国产人妖伪娘一区91| 91精品91久久久久久| 欧美日韩亚洲成人| 北条麻妃一区二区三区中文字幕| 欧美在线影院在线视频| 亚洲国产成人精品一区二区| 国产欧美一区二区三区在线| 久久精品色欧美aⅴ一区二区| 久久色精品视频| 国产精品入口夜色视频大尺度| 尤物精品国产第一福利三区| 国产欧美日韩专区发布| 欧美一级视频在线观看| 亚洲成人久久网| 91av视频在线观看|