Чтение файла Excel вызывает исключение COMException - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь прочитать из файла EXCEL и отобразить, что я получаю.

Вот мой класс Excel.

class Excel
    {
        private string path = "";
        _Application excel = new _Excel.Application();
         Workbook workbook;
         Worksheet worksheet;

        public Excel(string path, int sheet)
        {
            this.path = path;
            workbook = excel.Workbooks.Open(path);
            worksheet = workbook.Worksheets[sheet];
        }

        public string ReadCell(int row, int column)
        {
            row++;
            column++;

            if (worksheet.Cells[row, column].Value2 != null)
            {
                return worksheet.Cells[row, column].Value2;
            }
            else
            {
                return "";
            }
        }
    }

Вот как я его называю

string pathToFile = @"K:\hours\tracking.xlsx";
Excel excel = new Excel(pathToFile, 1);
MessageBox.Show(excel.ReadCell(0, 0));

Вот мое исключение

System.Runtime.InteropServices.COMException HResult = 0x80040154 Сообщение = Не удалось получить фабрику класса COM для компонента с CLSID {00024500-0000-0000-C000-000000000046}из-за следующей ошибки: 80040154 Класс не зарегистрирован (Исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).Source = mscorlib StackTrace: в System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject (RuntimeType objectType) в System.Runtime.Remoting.Activation.ActivationServices.CreateInstance (RuntimeType serverTypeerO.TentTectSectec, Object [] props, Boolean bNewObj) в System.RuntimeTypeHandle.CreateInstance (тип RuntimeType, логическое значение publicOnly, логическое значение noCheck, логическое значение & canBeCached, RuntimeMethodHandleInternal & ctor, логическое значение Boolean, BooleanSecureClaySecureSecureSecureSecureCheckSecureSecure.CheateSecureSecure.CheateSecureSecure.CheateSecureSecure.CheateSecureSecurity.CheateSecureCheckSecateSecuritySecureSecurity.CheateSecureCheckSecateSecuritySecureSecurity.Cheate.CheateSecureCheckSecureCheckSecateSecurity).StackCrawlMark & ​​stackMark) в System.RuntimeType.CreateInstanceDefaultCtor (логическое значение publicOnly, логическое значение skipCheckThis, логическое значение fillCache, StackCrawlMark & ​​stackMark) в типе System.Activator.CreateInstance..ctor (String path, Int32 sheet) в K: \ Programming \ Visual_studio_projects \ working_hours \ working_hours \ working_hours \ Excel.cs: строка 14 at working_hours.Program.Main (аргументы String []) в K: \ Programming \ visual_studio_projects \ working_hours \ working_hours \ working_hours \ Program.cs: строка 31

Я проверил, правильный ли путь, и он.

Я думаю, что это может иметь отношение к ссылкам, которые я только что реализовал, но я не совсем уверен.

Я добавил

System.Windows.Forms.dll и Microsoft.Office.Interop.Excel.dll

Если у кого-то есть идеи, пожалуйста, дайте мне знать.

Спасибо.

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