achraf boumessouer Ответов: 1

Я хочу получить доступ к файлу excel и показать данные в консольном приложении


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.IO;
using System.Data.OleDb;
using System.Data;
using Microsoft.Office.Interop.Excel;

using Excel = Microsoft.Office.Interop.Excel;


namespace ClassLibrary3
{
   
    class FileManager
    {
        private System.Data.DataTable GetDataTable(string sql, string connectionString)
        {
            System.Data.DataTable dt = null;

            using (OleDbConnection conn = new OleDbConnection(connectionString))
            {
                conn.Open();
                using (OleDbCommand cmd = new OleDbCommand(sql, conn))
                {
                    using (OleDbDataReader rdr = cmd.ExecuteReader())
                    {
                        dt.Load(rdr);
                        return dt;
                    }
                }
            }
        }

      public void GetExcel()
        {
            string fullPathToExcel = "C:\\cdr.xls" ; //ie C:\Temp\YourExcel.xls
            string connString = string.Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR=yes'", fullPathToExcel);
            System.Data.DataTable dt = GetDataTable("SELECT * from [SheetName$]", connString);

            //foreach (DataRow dr in dt.Rows)
            //{
            //    //Do what you need to do with your data here
            //}
        }
    }
}




  class Program
    {
       
        
      public   static void Main(string [] args)
        {
            //FileManager fichier = new FileManager();
           GetExcel a =new GetExcel();
           Console.WriteLine(a);
           Console.ReadKey();

            //DataSet d = fichier.ReadExcelFile();
          

        }

    
    }
}


Что я уже пробовал:

я попробовал это решение, но оно не будет работать должным образом.

Richard Deeming

DataTable dt = null;
...
dt.Load(rdr);


Как вы думаете, что произойдет, когда вы попытаетесь вызвать метод по нулевой ссылке?

1 Ответов

Рейтинг:
1

Dave Kreskowiak

И что означает "это не будет работать должным образом"? "Это не работает" - самое бесполезное описание проблемы. Он не передает ничего в виде сообщений об ошибках, поведения, ожиданий кода ... вообще ничего, с чем мы можем работать.

Просто глядя на ваш код, он даже не будет компилироваться. Вы пытаетесь создать экземпляр метода. Ты не можешь этого сделать. Вы можете только упаковывать экземпляры класса. Ваш класс называется FileManager, а не GetExcel.

Кроме того, вы ожидаете, что GetExcel вернет DataTable, но у вас есть тип возврата, указанный как void, который вообще ничего не вернет.


achraf boumessouer

что я должен поставить в качестве возвращаемого типа, чтобы получить DATATABLE!!

Dave Kreskowiak

Серьезно? Ваш метод GetExcel вызывает другой метод GetDataTable, который выполняет всю реальную работу. Посмотрите на его тип возврата. Это то, что вы должны использовать на GetExcel.