将数据表导出到Excel C#时出错

时间:2015-12-30 13:47:58

标签: c# excel winforms com office-interop

我目前在使用Microsoft.Office.Interlope将DataTable导出到Excel时出现问题。

  

出现的错误是“winform其他信息:正在检索   具有CLSID的组件的COM类工厂   {00024500-0000-0000-C000-000000000046}由于以下原因而失败   错误:80080005服务器执行失败(来自HRESULT的异常:   0x80080005(CO_E_SERVER_EXEC_FAILURE))。“

我已经用Google搜索并尝试了我能找到的所有解决方案,其中大多数是在组件服务中更改“Microsoft Excel应用程序”的DCOM安全权限。

excel上的错误会生成“无法使用对象链接”

这是我目前正在使用的代码

 try {
            DataTable table = new DataTable();
            table = dataset(table);

            Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application();
            excelApp.Visible = false;
            excelApp.DisplayAlerts = false;

            Microsoft.Office.Interop.Excel.Workbook excelWorkBook = excelApp.Workbooks.Add(Type.Missing);

            Microsoft.Office.Interop.Excel.Worksheet excelWorkSheet = (Microsoft.Office.Interop.Excel.Worksheet)excelWorkBook.ActiveSheet;
            excelWorkSheet.Name = table.TableName;

            excelWorkSheet.Cells[1, 1] = "Sample test data";
            excelWorkSheet.Cells[1, 2] = "Date : " + DateTime.Now.ToShortDateString();

            excelWorkBook.SaveAs(@"C:/testfolder/test.xlsx");
            excelWorkBook.Close();
            excelApp.Quit();
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }

是否有人熟悉导出到Excel?您是否遇到过此错误并且有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

NPOI是使用Microsoft.Office.Interop创建Excel电子表格的一个很好的开源替代方法。 This SO帖子为您提供了一些如何使用NPOI完成此操作的示例代码。