C#读取Excel中的内容,并将内容存放在二维数组中

C#读取Excel中的内容,并将内容存放在二维数组中

  1. 读取Excel中的内容,存放在DataTable中
    string path= @“E:\C# 读取Excel存放在二维数组中\11.xls”;
    (1)不区分后缀名
    C#读取Excel中的内容,并将内容存放在二维数组中_第1张图片
    具体代码如下:
    public static DataTable ImportExcelToDataTable2(string path)
    {
    //注意:把一个excel文件看做一个数据库,一个sheet看做一张表。语法 “SELECT * FROM [sheet1 ] " , 表 单 要 使 用 " [ ] " 和 " ]",表单要使用"[]"和" ]"使"[]""
    //以下2种方式都可以实现 Access数据库
    //string conStr = string.Format(“Provider=Microsoft.ACE.OLEDB.12.0; Data source={0}; Extended Properties=Excel 12.0;”, path);
    try
    {
    string conStr = “Provider=Microsoft.Ace.OLEDB.12.0;Data Source=” + path + “;Extended Properties=‘Excel 12.0;HDR=Yes;IMEX=2’”;
    using (OleDbConnection conn = new OleDbConnection(conStr))
    {
    conn.Open();
    //获取所有Sheet的相关信息(以下2种方式都可以实现)
    //DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, null);
    DataTable dtSheet = conn.GetOleDbSchemaTable(System.Data.OleDb.OleDbSchemaGuid.Tables, new object[] { null, null, null, “TABLE” });
    if (dtSheet.Rows.Count > 0)
    {
    //获取第一个 Sheet的名称
    string sheetName = dtSheet.Rows[0][“TABLE_NAME”].ToString().Trim();
    string sql = string.Format(“select * from [{0}]”, sheetName);
    using (OleDbDataAdapter oda = new OleDbDataAdapter(sql, conn))
    {
    DataTable dt = new DataTable();
    oda.Fill(dt);
    return dt;
    }
    }
    return null;
    }
    }
    catch(Exception ex)
    {
    MessageBox.Show(ex.Message);
    return null;
    }
    }
    (2)区分后缀名
    C#读取Excel中的内容,并将内容存放在二维数组中_第2张图片
    具体代码如下:
    public DataTable GetDataFromExcel(string filePath)
    {
    string connStr = “”;
    string fileType = System.IO.Path.GetExtension(filePath);
    if (string.IsNullOrEmpty(fileType)) return null;
    // 1、HDR表示要把第一行作为数据还是作为列名,作为数据用HDR=no,作为列名用HDR=yes;
    // 2、通过IMEX=1来把混合型作为文本型读取,避免null值。
    if (fileType == “.xls”||fileType == “.csv”)
    connStr = “Provider=Microsoft.Jet.OLEDB.4.0;” + “Data Source=” + filePath + “;” + ";Extended Properties=“Excel 8.0;HDR=NO;IMEX=1"”;//此连接只能操作Excel2007之前(.xls)文件
    else//.xlsx .csv
    connStr = @“Provider=Microsoft.ACE.OLEDB.12.0;Data Source=” + filePath + “;Extended Properties=“Excel 12.0 Xml;HDR=No””; //此连接可以操作.xls与.xlsx文件 (支持Excel2003 和 Excel2007 的连接字符串)
    string sql_F = "Select * FROM [{0}] ";
    OleDbConnection conn = null;
    OleDbDataAdapter da = null;
    DataTable dataTable = new DataTable();
    try
    {
    // 初始化连接,并打开
    conn = new OleDbConnection(connStr);
    conn.Open();
    da = new OleDbDataAdapter();
    da.SelectCommand = new OleDbCommand(String.Format(sql_F, “Sheet1$”), conn);
    da.Fill(dataTable);
    }
    catch (Exception ex)
    {
    MessageBox.Show(ex.Message);
    }
    finally
    { // 关闭连接
    if (conn.State == ConnectionState.Open)
    {
    conn.Close();
    da.Dispose();
    conn.Dispose();
    }
    }
    return dataTable;
    }

2.将DataTable中的数据存放在二维数组中
具体代码如下:
string[,] array = new string[dt.Rows.Count, dt.Columns.Count];
for (int i = 0; i < dt.Rows.Count; i++)
{
for (int j = 0; j < dt.Columns.Count; j++)
{
array[i, j] = dt.Rows[i][j].ToString().ToUpper().Trim();//把小写的字符转换成相应的大写字母。反之ToLower()
}
}
C#读取Excel中的内容,并将内容存放在二维数组中_第3张图片

你可能感兴趣的:(C#读取Excel中的内容,并将内容存放在二维数组中)