我正在尝试从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.dll
和
Microsoft.Office.Interop.Excel.dll
如果有人有任何想法,请告诉我。
谢谢。