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

首頁 > 編程 > C# > 正文

WinForm項目開發中Excel用法實例解析

2020-01-24 02:34:35
字體:
來源:轉載
供稿:網友

在實際項目的開發過程中,所涉及的EXCEL往往會比較復雜,并且列中還會帶有一些計算公式,這就給讀取帶來了很大的困難,曾經嘗試過一些免費的第三方dll,譬如Myxls,NPOI,IExcelDataReader都會出現一些問題,最后采用OLEDB形式讀取,再x64操作系統上有點問題,不過采用小技巧即可解決,可以參考鏈接地址:http://ellisweb.net/2010/01/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
97视频免费看| 精品无码久久久久久国产| 精品电影在线观看| 在线视频亚洲欧美| 久久精品一偷一偷国产| 欧美精品18videos性欧美| 国产做受高潮69| 亚洲aⅴ男人的天堂在线观看| 欧美激情一区二区三区久久久| 亚洲黄色片网站| 国产一区视频在线| 亚洲精品av在线播放| 色综合色综合网色综合| 久久精品99久久香蕉国产色戒| 国产婷婷成人久久av免费高清| 日本高清+成人网在线观看| 久久久国产一区二区三区| 色av吧综合网| 狠狠做深爱婷婷久久综合一区| 成人写真视频福利网| 97精品视频在线播放| 久久久999国产精品| 91成品人片a无限观看| 亚洲美女av电影| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲精品在线视频| 欧美精品日韩三级| 欧美丝袜美女中出在线| 午夜精品一区二区三区在线| 日韩欧美aⅴ综合网站发布| 97香蕉超级碰碰久久免费的优势| 色99之美女主播在线视频| 尤物yw午夜国产精品视频| 久久久亚洲成人| 91色在线视频| 国产亚洲xxx| 亚洲老头老太hd| 91精品国产乱码久久久久久蜜臀| 亚洲精品永久免费| 国产91在线播放九色快色| 国产欧美日韩中文字幕在线| 亚洲91av视频| 欧美性受xxxx白人性爽| 中文字幕国内精品| 久久亚洲一区二区三区四区五区高| 欧美一区二区三区免费观看| 欧美在线亚洲一区| 国产视频精品一区二区三区| 欧美激情按摩在线| 亚洲精品久久久久国产| www.午夜精品| 国产精品久久久久久久久久三级| 国产精品白丝jk喷水视频一区| 欧美裸体xxxx极品少妇| 日韩在线高清视频| 亚洲影影院av| 国内精品久久影院| 久久精品视频在线播放| 色午夜这里只有精品| 色噜噜狠狠狠综合曰曰曰| 久久九九有精品国产23| 久久伊人精品天天| 中文字幕亚洲一区二区三区五十路| 成人久久一区二区| 深夜精品寂寞黄网站在线观看| 亚洲视频在线观看| 亚洲第一中文字幕| 久久影院模特热| 国产亚洲免费的视频看| www.国产精品一二区| 中文字幕日韩精品有码视频| 中文字幕久精品免费视频| 欧美另类第一页| 欧美一区二区大胆人体摄影专业网站| 国产欧美精品久久久| 亚洲视频在线看| 亚洲视频网站在线观看| 日韩av在线免费看| 日韩免费在线电影| 国产日韩在线看片| 亚洲欧美国内爽妇网| 国产欧美婷婷中文| 中文字幕日韩专区| 亚洲国产精品成人精品| 国内久久久精品| 欧美日本高清一区| 国产成人亚洲综合青青| 最近中文字幕2019免费| 国产亚洲欧美日韩一区二区| 欧美第一黄色网| 欧美成人在线免费视频| 欧美大片欧美激情性色a∨久久| 日韩大片免费观看视频播放| 欧美一区亚洲一区| 97在线观看视频| 欧洲中文字幕国产精品| 国产精品高清网站| 久久久av一区| 国产精品久久久久久久美男| 成人精品视频在线| 精品中文字幕在线2019| 国产精品午夜一区二区欲梦| 精品国产老师黑色丝袜高跟鞋| 亚洲欧洲在线观看| 亚洲www在线| 美日韩精品免费观看视频| 亚洲黄色有码视频| 在线观看国产欧美| 欧美激情一区二区三区高清视频| 欧美极品欧美精品欧美视频| 91影视免费在线观看| 在线免费观看羞羞视频一区二区| 国产精品久久电影观看| 久久久久久久香蕉网| 欧美日韩视频免费播放| 欧美理论片在线观看| 久久久久久免费精品| 日韩免费精品视频| 亚洲精品综合精品自拍| 97超级碰碰碰| x99av成人免费| 亚洲精品美女久久久久| 国产成人a亚洲精品| 成人午夜小视频| 亚洲www视频| 三级精品视频久久久久| 亚洲欧洲一区二区三区久久| 亚洲午夜小视频| 国产日韩欧美日韩| 夜夜嗨av一区二区三区免费区| 亚洲欧美第一页| 欧美午夜片欧美片在线观看| 久久精品一区中文字幕| 成人黄色在线免费| 国产精品久久一区主播| 亚洲精品97久久| 国产精品黄色av| 91九色综合久久| 91免费国产网站| 一区二区三区精品99久久| 亚洲18私人小影院| 中文字幕日韩精品在线| 国产最新精品视频| 国产亚洲人成a一在线v站| 亚洲一区中文字幕在线观看| 97国产精品免费视频| 亚洲国产天堂久久国产91| 国产精品专区h在线观看| 91在线|亚洲| 亚洲国产福利在线| 亚洲网址你懂得| 奇米影视亚洲狠狠色| 日韩精品极品在线观看播放免费视频| 久久久久久亚洲精品中文字幕| 日韩中文在线不卡| 日韩在线视频观看| 欧美日韩精品国产| 最近日韩中文字幕中文| 国产www精品| 欧洲亚洲免费视频| 日韩精品视频在线观看网址| 欧美高清视频在线播放| 欧美精品电影免费在线观看| 2019中文字幕在线免费观看|