C# 调用Excel报错

Vicoman 2013-08-27 08:25:39
VS2008 C#开发的软件,调用Office读取Excel时发生如下错误:

System.Runtime.InteropServices.COMException (0x80040154): 检索 COM 类工厂中 CLSID 为 {00024500-0000-0000-C000-000000000046} 的组件时失败,原因是出现以下错误: 80040154。

软件是WinForm程序, C# + MySql
开发环境是XP sp1 32位的,Office 2007
运行环境是Win7 64位,运行环境没有安装Office。

软件打包的时候已经包含了
Microsoft.Office.Interop.Excel.dll
Microsoft.Vbe.Interop.dll
Interop.Shell32.dll

是否是因为运行环境没有安装Office?

BTW, 一个问题,.NET开发的程序,引用的外部DLL,如上面的Microsoft.Office.Interop.Excel.dll
等等,在开发时,或者制作安装包时是否可以改名? 这名字实在太长了。
...全文
439 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxr2010bj 2013-10-15
  • 打赏
  • 举报
回复
我的也曾出现过此类问题,开发环境是Win7 64位的,Office 2007 运行环境是XP sp3 32位,运行环境没有安装Office2003,都出问题了,安装了2007问题立刻解除!
异常异长 2013-10-15
  • 打赏
  • 举报
回复
需要安装office
  • 打赏
  • 举报
回复
JAVA用POI,NET用NPOI,都很成熟的一直有更新
  • 打赏
  • 举报
回复
#region 操作EXCEL的一个类(需要Excel.dll支持)

        private int titleColorindex = 15;
        /// <summary>
        /// 标题背景色
        /// </summary>
        public int TitleColorIndex
        {
            set { titleColorindex = value; }
            get { return titleColorindex; }
        }

        private DateTime beforeTime;			//Excel启动之前时间
        private DateTime afterTime;				//Excel启动之后时间

        #region 创建一个Excel示例
        /// <summary>
        /// 创建一个Excel示例
        /// </summary>
        public void CreateExcel()
        {
            Excel.Application excel = new Excel.Application();
            excel.Application.Workbooks.Add(true);
            excel.Cells[1, 1] = "第1行第1列";
            excel.Cells[1, 2] = "第1行第2列";
            excel.Cells[2, 1] = "第2行第1列";
            excel.Cells[2, 2] = "第2行第2列";
            excel.Cells[3, 1] = "第3行第1列";
            excel.Cells[3, 2] = "第3行第2列";

            //保存
            excel.ActiveWorkbook.SaveAs("./tt.xls", XlFileFormat.xlExcel9795, null, null, false, false, Excel.XlSaveAsAccessMode.xlNoChange, null, null, null, null, null);
            //打开显示
            excel.Visible = true;
            //			excel.Quit();
            //			excel=null;            
            //			GC.Collect();//垃圾回收
        }
        #endregion
灬浪子灬 2013-08-28
  • 打赏
  • 举报
回复
运行环境还是要装office的!
孙大诚_SunRobin 2013-08-28
  • 打赏
  • 举报
回复
即使装了office, xp系统下开发的winform读取excel的程序,在win7下也可能有问题。所以,尽可能在win7下开发win7下用。即使xp下开发的,也要在win7稍稍修改一下,可能就几行代码的事。
  • 打赏
  • 举报
回复
需要重新注册组件
全栈极简 2013-08-27
  • 打赏
  • 举报
回复
全栈极简 2013-08-27
  • 打赏
  • 举报
回复
要装office的,有精简版。
Vicoman 2013-08-27
  • 打赏
  • 举报
回复
应该是没有安装Office的原因 在网上看到给的解决方法, 本机的组件服务里,找不到Microsoft Excel Application 那么如何不安装Office而能注册Excel组件,可以对Excel操作呢? (不想用OLE,因为Excel格式会影响读入的数据)

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧