在wpf中要把数据导出到excel文件,引用了Microsoft.Office.Interop.Excel的dll在new Microsoft.Office.Interop.Excel.Application();的时候报异常:检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件失败,原因是出现以下错误: 800702e4 请求的操作需要提升。 (异常来自 HRESULT:0x800702E4)。
private void btnExcel_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                string fileName = "";
                string saveFileName = "";
                System.Windows.Forms.SaveFileDialog saveDialog = new System.Windows.Forms.SaveFileDialog();
                saveDialog.DefaultExt = "xlsx";
                saveDialog.Filter = "Excel 文件|*.xlsx";
                saveDialog.FileName = fileName;
                saveDialog.ShowDialog();
                saveFileName = saveDialog.FileName;
                if (saveFileName.IndexOf(":") < 0) return;                  var xlApp = new Microsoft.Office.Interop.Excel.Application();//这一句报错
                if (xlApp == null)
                {
                    System.Windows.MessageBox.Show("无法创建Excel对象,您可能未安装Excel");
                    return;
                }
                Microsoft.Office.Interop.Excel.Workbooks workbooks = xlApp.Workbooks;
                Microsoft.Office.Interop.Excel.Workbook workbook = workbooks.Add(Microsoft.Office.Interop.Excel.XlWBATemplate.xlWBATWorksheet);
                Microsoft.Office.Interop.Excel.Worksheet worksheet = (Microsoft.Office.Interop.Excel.Worksheet)workbook.Worksheets[1]; //取得sheet1
                //......
            }
            catch()
            {
            }
        }

解决方案 »

  1.   

    管理员身份运行后又报下面的错误:无法将类型为“System.__ComObject”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Excel.Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的 COM 组件调用 QueryInterface 因以下错误而失败: 不支持此接口 (异常来自 HRESULT:0x80004002 (E_NOINTERFACE))。
      

  2.   


    可以使用开源项目 NPOI
    方便
      

  3.   


    这有可能是被 WPS 等流氓软件把 Office 的系统注册表项给覆盖了。往往遇到这类事件,甚至重装 Office 都不行,甚至得去用 WPS 等的卸载软件去卸载、你的 Office 才能正常用。
      

  4.   

    并不会影响 Word、Excel 等等直接打开。但是会影响后台编程接口打开。