C#,来自HRESULT的异常:0x80029C4A(TYPE_E_CANTLOADLIBRARY)

时间:2013-11-14 10:56:51

标签: c# excel exception

当我在用户端尝试exe时,我遇到了这个问题。用户有MicosoftExcel 2000,我已经执行2003.有人可以帮助我。

我在c#中创建了这个工具,并使用了COM

if( strDataSheetFile.Trim().EndsWith( ".xls" ) || strDataSheetFile.Trim().EndsWith( ".xlsx" ) )
        {
            System.IO.StreamWriter file = null;
            if (IfAbFile)
            {
                file = new System.IO.StreamWriter(AbaqusDeckFile.ToString(), true);
            }
            else
            {
                string[] strFILEnamesSplit = strDataSheetFile.Split(new Char[] { '\\' });
                string ExpFile = "";
                int ilnt = 0;
                foreach (string strVal in strFILEnamesSplit )
                {
                    if (ilnt < (strFILEnamesSplit.Length - 1))
                    {
                        ExpFile += strVal;
                        ExpFile += "/";
                    }
                    else
                        ExpFile += "Deck.inp";

                    ilnt += 1;
                }

                file = new System.IO.StreamWriter(ExpFile.ToString(), true);
            }

            List<List<double>> List_SheetValues = new List<List<double>>();

            Excel.Application objexcel;
            Excel.Workbook wbexcel;

            Excel.Worksheet wsheet;

            objexcel = new Excel.Application();

            //strDataSheetFile = @"C:\Ajoy\Demos\IsoMount\IsoMount_Springs_database_updated.xls";

            if (File.Exists(strDataSheetFile))
                wbexcel = objexcel.Workbooks.Open(strDataSheetFile);
            else
            {
                MessageBox.Show(" Please state the number of springs", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                Application.UseWaitCursor = false;
                return;
            }

2 个答案:

答案 0 :(得分:1)

这可能发生在你使用早期(编译时)绑定到Excel类型库。

用户拥有不同版本的类型库(机器上的2000 vs 2003)。 您是否尝试在计算机上安装Excel 2000&amp;通过链接到2000类型库来编译您的应用程序。

或者,如果您没有使用任何2003特定功能和功能&amp;您使用的对象在这两个版本之间没有变化,您可以尝试延迟(运行时)绑定。

会有轻微的性能损失&amp;您在IDE中丢失了intellisense,但应该使您的应用程序可以在支持这些对象的所有Excel版本中移植。功能

答案 1 :(得分:0)

我认为问题是你正在编译你的项目&#39; x64&#39; 64位而不是将其编译为x86 32位应用程序。请按照以下步骤操作:

 ->Right click on Project
 ->Select Properties
 ->Select Build tab
 ->Change  "Platform Target" to "x86"
 ->now run the Project.