我如何将Excel文件读取为矩阵

本文关键字:读取 文件 Excel | 更新日期: 2023-09-27 18:02:24

我有一个xslx文件,其中包含两列:ID和创建日期。我不知道文件的长度。我怎么能读取文件到矩阵(我也不希望列标题在矩阵中,只有数据)?

我如何将Excel文件读取为矩阵

以下链接中的代码可能会对您有所帮助:

如何在c sharp中读取Excel文件

您可以根据需要提供xlsx文件的路径。您还可以在代码中的range = xlWorkSheet.UsedRange;行之后使用以下行:

string[,] requiredData = new string[range.Rows.Count - 1,range.Columns.Count];

创建矩阵。

也可以将数据写入上述创建的矩阵,而不是显示MessageBox(您可以按如下方式修改循环):

for (rCnt = 2; rCnt <= range.Rows.Count; rCnt++)
            {
                for (cCnt = 1; cCnt <= range.Columns.Count; cCnt++)
                {
                    str = (range.Cells[rCnt, cCnt] as Microsoft.Office.Interop.Excel.Range).Value2.ToString();
                    requiredData[rCnt - 2][cCnt - 1] = str;
                }
            }

    /// <summary>
    /// Import Function For Xlsx  File
    /// </summary>
    /// <param name="s">File Name</param>
    /// <returns> Datatable </returns>
    private DataTable Import4Xlsx(string s)
    {
        string conn = "Provider=Microsoft.ACE.OLEDB.12.0;" +
                      "Data Source=" + s + ";" +
                      "Extended Properties='Excel 12.0 Xml;Allow Zero DateTime=True;" +
                      "HDR=YES;IMEX=1'"'";
        string[] sheetname = GetExcelSheetNames(conn);
        try
        {
            var objConn = new OleDbConnection(conn);
            objConn.Open();
            var ds = new DataSet();
            var da = new OleDbDataAdapter("SELECT * FROM [" + sheetname[0] + "]", conn);
            da.Fill(ds);
            objConn.Close();
            return ds.Tables[0];//resultant data
        }
        catch (Exception ex)
        {
            Trace.WriteLine(ex.Message + ex.Source);
            return null;
        }
    }
    /// <summary>
    /// Get Excel Files Sheet Name
    /// </summary>
    /// <param name="con">Connection String</param>
    private String[] GetExcelSheetNames(string con)
    {
        OleDbConnection objConn = null;
        DataTable dt = null;
        try
        {
            objConn = new OleDbConnection(con);
            objConn.Open();
            dt = objConn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
            if (dt == null) return null;
            var 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 (Exception ex)
        {
            Trace.WriteLine(ex.Message + ex.Source);
            return null;
        }
        finally
        {
            if (objConn != null)
            {
                objConn.Close();
                objConn.Dispose();
            }
            if (dt != null)
            {
                dt.Dispose();
            }
        }
    }

试一下