读取Excel中数据
#region 读取导入Excel数据 /// <summary> /// /// </summary> /// <param name="filename"></param> /// <param name="fields"></param> /// <returns></returns> public DataSet ReadDataFromExcel(string filename, string fields) { DataSet ds = new DataSet(); try { string cnn = string.Empty; string ext = Path.GetExtension(filename).ToLower(); if (ext == ".xls") { cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34; } else if (ext == ".xlsx") { cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34; } else { throw new Exception("读取失败,非excel文件格式。"); } using (OleDbConnection connection = new OleDbConnection(cnn)) { connection.Open(); DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); foreach (DataRow row in tables.Rows) { string table = row["TABLE_NAME"].ToString(); DataTable dt = ReadEachExcelSheetData(connection, table, fields); if (dt != null) { ds.Tables.Add(dt.Copy()); } } } return ds; } catch (Exception ex) { throw new Exception("数据文件或者内容格式有严重错误(" + ex.Message + "),请检查!"); } } public DataTable ReadEachExcelSheetData(OleDbConnection connection, string table, string fields) { try { string sql = string.Empty; string query = string.Empty; if (fields.IndexOf(',') > 0) { foreach (string column in fields.Split(',')) { query += "[" + column + "],"; } query = query.Trim(','); } else { query = fields; } sql = @" SELECT {0} FROM [{1}] "; sql = string.Format(sql, query, table); DataSet ds = new DataSet(); OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection); adapter.Fill(ds, table); if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0) { return ds.Tables[0]; } } catch (Exception ex) { throw ex; } return null; } private DataSet GetDataFromExcel(string filename,string fields) { DataSet ds = new DataSet(); string cnn = string.Empty; string ext = Path.GetExtension(filename).ToLower(); if (ext == ".xls") { cnn = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 8.0;HDR=Yes;IMEX=1;" + (char)34; } else if (ext == ".xlsx") { cnn = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = " + filename + ";Extended Properties=" + (char)34 + "Excel 12.0;HDR=Yes;IMEX=1;" + (char)34; } else { throw new Exception("读取失败,非excel文件格式。"); } using (OleDbConnection connection = new OleDbConnection(cnn)) { connection.Open(); DataTable tables = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "TABLE" }); string tableName = tables.Rows[0]["TABLE_NAME"].ToString(); string sql = "select * from [{0}]"; sql = string.Format(sql, tableName); OleDbCommand command = connection.CreateCommand(); command.CommandText = sql; OleDbDataAdapter adapter = new OleDbDataAdapter(command); adapter.Fill(ds); return ds; } } #endregion
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix