using BPASmartClient.Message; using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.IO; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; namespace BPASmartClient.Helper { public class ExcelHelper { public DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName) { //此连接只能操作Excel2007之前(.xls)文件 //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + FileFullPath + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; OleDbConnection conn = new OleDbConnection(strConn); conn.Open(); DataSet ds = new DataSet(); OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("SELECT * FROM [{0}]", SheetName), conn); //OleDbDataAdapter odda = new OleDbDataAdapter(string.Format("select * from [Sheet1$]", conn),conn);                                    odda.Fill(ds, SheetName); conn.Close(); return ds.Tables[0]; } //根据Excel物理路径获取Excel文件中所有表名 public String[] GetExcelSheetNames(string excelFile) { OleDbConnection objConn = null; System.Data.DataTable dt = null; try { //此连接只能操作Excel2007之前(.xls)文件 //string strConn = "Provider=Microsoft.Jet.OleDb.4.0;" + "data source=" + excelFile + ";Extended Properties='Excel 8.0; HDR=NO; IMEX=1'"; //此连接可以操作.xls与.xlsx文件 string strConn = "Provider=Microsoft.Ace.OleDb.12.0;" + "data source=" + excelFile + ";Extended Properties='Excel 12.0; HDR=NO; IMEX=1'"; objConn = new OleDbConnection(strConn); objConn.Open(); dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null); if (dt == null) { return null; } String[] excelSheets = new String[dt.Rows.Count]; int i = 0; foreach (DataRow row in dt.Rows) { excelSheets[i] = row["TABLE_NAME"].ToString(); i++; } return excelSheets; } catch { return null; } finally { if (objConn != null) { objConn.Close(); objConn.Dispose(); } if (dt != null) { dt.Dispose(); } } } public static DataTable ReadDataFromCSV( string file) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); DataTable dt = null; if(File.Exists(file)) { dt = new DataTable(); FileStream fs = new FileStream(file, FileMode.Open,FileAccess.Read); StreamReader sr; try { Encoding encoding = Encoding.Default; using (sr = new StreamReader(fs, Encoding.GetEncoding("GB2312"))) { string head = sr.ReadLine(); string[] headNames = head.Split(','); for (int i = 0; i < headNames.Length; i++) { dt.Columns.Add(headNames[i], typeof(string)); } while (!sr.EndOfStream) { string lineStr = sr.ReadLine(); if (lineStr != null) { string[] lines = lineStr.Split(','); DataRow dr = dt.NewRow(); for (int i = 0; i < lines.Length; i++) { dr[i] = lines[i]; } dt.Rows.Add(dr); } } sr.Close(); fs.Close(); } } catch (Exception ex) { MessageLog.GetInstance.ShowEx($"读取csv文件异常:{ex.Message}"); } } return dt; } } }