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
等等,在开发时,或者制作安装包时是否可以改名? 这名字实在太长了。excelwinformwin7.net64位
开发环境是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
等等,在开发时,或者制作安装包时是否可以改名? 这名字实在太长了。excelwinformwin7.net64位
应该是没有安装Office的原因
在网上看到给的解决方法,
本机的组件服务里,找不到Microsoft Excel Application那么如何不安装Office而能注册Excel组件,可以对Excel操作呢?
(不想用OLE,因为Excel格式会影响读入的数据)
refer:http://www.cnblogs.com/linzheng/archive/2010/12/20/1912137.html
http://blog.csdn.net/chinajiyong/article/details/9187485
/// <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
运行环境是XP sp3 32位,运行环境没有安装Office2003,都出问题了,安装了2007问题立刻解除!