读取Excel文件会引发COMException

时间:2019-04-24 19:36:35

标签: c# excel file interop

我正在尝试从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     消息=由于以下错误,未能为CLSID为{00024500-0000-0000-C000-000000000046}的组件检索COM类工厂:80040154未注册类(HRESULT的异常:0x80040154(REGDB_E_CLASSNOTREG))。     来源= mscorlib     堆栈跟踪:      在System.Runtime.Remoting.RemotingServices.AllocateUninitializedObject(RuntimeType objectType)处      在System.Runtime.Remoting.Activation.ActivationServices.CreateInstance(RuntimeType serverType)      在System.Runtime.Remoting.Activation.ActivationServices.IsCurrentContextOK(RuntimeType serverType,Object [] props,Boolean bNewObj)      在System.RuntimeTypeHandle.CreateInstance(RuntimeType类型,布尔publicOnly,布尔noCheck,布尔&canBeCached,RuntimeMethodHandleInternal&ctor,布尔&bNeedSecurityCheck)      在System.RuntimeType.CreateInstanceSlow处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark)      在System.RuntimeType.CreateInstanceDefaultCtor处(布尔publicOnly,布尔skipCheckThis,布尔fillCache,StackCrawlMark和stackMark)      在System.Activator.CreateInstance(Type type,Boolean nonPublic)      在System.Activator.CreateInstance(Type type)      在K:\ programming \ visual_studio_projects \ working_hours \ working_hours \ working_hours \ Excel.cs:第14行的working_hours.Excel..ctor(字符串路径,Int32工作表)中      在K:\ programming \ visual_studio_projects \ working_hours \ working_hours \ working_hours \ Program.cs:line 31中的working_hours.Program.Main(String [] args)中

我检查路径是否正确。

我认为这可能与我刚刚实现的参考有关,但我不太确定。

我添加了

System.Windows.Forms.dllMicrosoft.Office.Interop.Excel.dll

如果有人有任何想法,请告诉我。

谢谢。

0 个答案:

没有答案