Как мне прочитать файл Excel в матрицу? - PullRequest
2 голосов
/ 19 июля 2011

У меня есть файл xslx, который содержит два столбца: ID и Дата создания.Я не знаю длину файла.Как я могу прочитать файл в матрицу (я также не хочу, чтобы заголовки столбцов были в матрице, только данные)?

Ответы [ 2 ]

0 голосов
/ 19 июля 2011

Код в следующей ссылке может помочь вам:

Как читать файл 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;
                }
            }

Надеюсь, это поможет ...

0 голосов
/ 19 июля 2011
    /// <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();
            }
        }
    }

Попробуйте все отлично

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...