/// <summary>
/// 读取excel文件内容,只能读取xls和xslx类型的文件
/// </summary>
/// <param name="filePath"></param>
/// <param name="fileName"></param>
public void GetExcelData(string filePath)
{
try
{
string fileType = ".xls";//获取文件的后缀
string connectinString = string.Format("Provider=Microsoft.ACE.OLEDB.{0}.0;Persist Security Info=False;" +
"Extended Properties=\"Excel {1}.0;HDR={2};IMEX=1;\";" +
"data source={3};", (fileType == ".xls" ? 4 : 12), (fileType == ".xls" ? 8 : 12), (true ? "Yes" : "NO"), filePath);
//建立 链接 创建到数据源的对象
OleDbConnection connection = new OleDbConnection(connectinString);
//打开链接
connection.Open();
//返回Excel的架构,包括各个sheet表的名称,类型,创建时间和修改时间等
DataTable dtSheetName = connection.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, new object[] { null, null, null, "Table" });
//包含excel中表名的字符串数组
string[] strTableNames = new string[dtSheetName.Rows.Count];
for (int k = 0; k < dtSheetName.Rows.Count; k++)
{
strTableNames[k] = dtSheetName.Rows[k]["TABLE_NAME"].ToString();
}
//string sql = $"select * from [{sheet}$]"; //sql 语法 是一个查询命令,该句报错,修改成如下
string sql = "select * from [" + strTableNames[0] + "]";
OleDbDataAdapter adapter = new OleDbDataAdapter(sql, connection);
DataSet dataSet = new DataSet();//用来放数据 用来存放DataTable
adapter.Fill(dataSet);//表示把查询 结果datatable 放到(填充)dataset 里面
connection.Close();//释放链接资源
//取得数据
DataTableCollection tableCollection = dataSet.Tables; //获取当前集合中所有 表格
DataTable table = tableCollection[0];//因为只往dataset里面放置 了一张表格 ,所有这里取得索引为0的表格就是我们刚刚查询到的表格
//取得表格中的数据
//取得table中所有的行
DataRowCollection dataTableRow = table.Rows;//返回了一个行的集合
//遍历行的集合,取得每一个行的datarow对象
foreach (DataRow row in dataTableRow)//遍历行
{
foreach (var item in row.ItemArray)//遍历行的所有列
{
}
}
}
catch (Exception ex)
{
Log.WriteLog(LogFile.Error, "读取Excel内容出错!\r\n" + ex);//自定义的日志输出
}
}