问题描述
生成excel时候,提示“检索COM类工厂中CLSID为{00020819-0000-0000-C000-000000000046}的组件时失败,原因是出现以下错误:80040154。”但是运行dconcnfg.exe配置microsoftexcelapplation时发现其CLSID为{00020812-0000-0000-C000-000000000046}因为我装的是office2007,难道上面一个是07的ID一个是03的ID,我把ofiice2007重新卸载再安装也不行?请问Dcom怎么卸载和安装?
解决方案
解决方案二:
不要再纠结系统位数,office版本和dcom注册,直接使用第三方dll
解决方案三:
使用office的dll很多问题需要office位数和引用的dll位数一致,如果引用了32位的dll,还要在iis里设置允许使用32位程序集然后dcom组件需要注册还要给office用户权限
解决方案四:
此外引用的dll版本和安装的office版本也要一致,如果安装了多个版本,有可能会冲突
解决方案五:
就是组件的权限问题
解决方案六:
不用纠结id就是权限问题参考
解决方案七:
目测权限问题
解决方案八:
本地也出问题的话就不是了
解决方案九:
引用4楼stubble的回复:
就是组件的权限问题
这类错误基本上都是这个问题,不要纠结版本问题我装的2010,ID跟你的一样在DCOM属性的权限设置里,把程序运行用户设为Administrator试试
解决方案十:
2楼正解第三方独立dll或者简化,生成csv文本格式
解决方案十一:
生成Excel示例privatevoidbtn_Create_Click(objectsender,EventArgse){stringP_str_path=txt_Path.Text;//记录路径Microsoft.Office.Interop.Excel.Applicationexcel=newMicrosoft.Office.Interop.Excel.Application();//实例化Excel对象Microsoft.Office.Interop.Excel.WorkbooknewWorkBook=excel.Application.Workbooks.Add(true);//添加新工作簿objectmissing=System.Reflection.Missing.Value;//获取缺少的object类型值newWorkBook.Worksheets.Add(missing,missing,missing,missing);//向Excel文件中增加工作表if(P_str_path.EndsWith("\"))//判断路径是否结尾newWorkBook.SaveCopyAs(P_str_path+DateTime.Now.ToString("yyyyMMddhhmmss")+".xls");//保存Excel文件elsenewWorkBook.SaveCopyAs(P_str_path+"\"+DateTime.Now.ToString("yyyyMMddhhmmss")+".xls");//保存Excel文件MessageBox.Show("Excel文件创建成功","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);//弹出提示信息System.Diagnostics.Process[]excelProcess=System.Diagnostics.Process.GetProcessesByName("EXCEL");//实例化进程对象foreach(System.Diagnostics.ProcesspinexcelProcess)p.Kill();//关闭进程}
解决方案十二:
aspose,openxml,epplus,spire.xls,npoi欢迎你的使用
解决方案十三:
不用第三方组件
解决方案十四:
直接使用数据源和XSLT就可以了