请问如何在C#中运行EXCEL ACCESS?

2025-01-08 08:32:43
推荐回答(4个)
回答1:

版本高于 2000 的 Microsoft Office 在安装时不会在快捷方式链接中包含路径信息。这样做的目的是可以使用“首次使用时运行”选项。当使用此选项时,快捷方式将显示,但应用程序将不会安装在硬盘上。当您首次单击该快捷方式时,应用程序将被安装。

您可以使用 Windows Installer 来获取所安装的 Office 应用程序的路径。按照下面给出的步骤操作,可以创建一个能够报告所安装的 Office 应用程序的目录的控制台应用程序。

生成示例
在 Visual C++ 中创建一个空的控制台应用程序。
创建一个名为 main.cpp 的新文件,然后在代码窗口中粘贴下面的代码:
#include
#include
#include

const char *Word = "{CC29E963-7BC2-11D1-A921-00A0C91E2AA2}";
const char *Excel = "{CC29E96F-7BC2-11D1-A921-00A0C91E2AA2}";
const char *PowerPoint = "{CC29E94B-7BC2-11D1-A921-00A0C91E2AA2}";
const char *Access = "{CC29E967-7BC2-11D1-A921-00A0C91E2AA2}";
const char *Office = "{00000409-78E1-11D2-B60F-006097C998E7}";

int main(void)
{
DWORD size = 300;
INSTALLSTATE installstate;
char *sPath;

sPath = new char[size];
installstate = MsiGetComponentPath(
Office,Word,sPath,&size);

if ((installstate == INSTALLSTATE_LOCAL) ||
(installstate == INSTALLSTATE_SOURCE))
cout << "Installed in: " << sPath << endl;
delete sPath;
return 0;
}

单击项目菜单,然后单击设置以显示项目设置对话框。
单击链接选项卡,然后在对象/库模块列表中添加 msi.lib。
运行该程序。它将显示安装 Microsoft Word 的文件路径。

注意:代码中还包含与 Word、Excel、PowerPoint 和 Access 关联的 GUID。要查找另一个 Office 应用程序的路径,请将该应用程序的名称作为 MsiGetComponentPath 函数的第二个参数进行传递。

要查找 Office XP 应用程序的路径,请使用下面的内容替换上述常量:
const char *Word = "{8E46FEFA-D973-6294-B305-E968CEDFFCB9}";
const char *Excel = "{5572D282-F5E5-11D3-A8E8-0060083FD8D3}";
const char *PowerPoint = "{FC780C4C-F066-40E0-B720-DA0F779B81A9}";
const char *Access = "{CC29E967-7BC2-11D1-A921-00A0C91E2AA3}";
const char *Office = "{20280409-6000-11D3-8CFE-0050048383C9}";

要查找 Office 2003 应用程序的路径,请使用下面的内容替换上述常量:
const char *Word = "{1EBDE4BC-9A51-4630-B541-2561FA45CCC5}";
const char *Excel = "{A2B280D4-20FB-4720-99F7-40C09FBCE10A}";
const char *PowerPoint = "{C86C0B92-63C0-4E35-8605-281275C21F97}";
const char *Access = "{F2D782F8-6B14-4FA4-8FBA-565CDDB9B2A8}";
const char *Office = "{90110409-6000-11D3-8CFE-0150048383C9}";

以下为C#代码:
27.指定目录下搜索文件
/*
using System.Text;
using System.IO;
*/
string fileName=%%1;
string dirName=%%2;
DirectoryInfo dirc=new DirectoryInfo(dirName);
foreach(FileInfo file in dirc.GetFiles()) {
if(file.Name.IndexOf(fileName)>-1)
return file.FullName;
}
foreach(DirectoryInfo dir in dirc.GetDirectories()) {
return GetFile(fileName,dir.FullName);
}
return "找不到指定的文件";
}

71.激活一个程序或程序关联的文件
//using System.Diagnostics;
Process LandFileDivisison;
LandFileDivisison = new System.Diagnostics.Process();
LandFileDivisison.StartInfo.FileName = %%1;
LandFileDivisison.Start();

回答2:

我不太明白你说的打开是什么意思?

是获得里面的内容么?

如果是的话,那不就是数据库操作的事么?

还是说,你的程序能调用Access 2007把数据库打开,而这个打开不是用你的程序打开,而是用Access 2007打开?

还有种理解就是你想编辑,查看Access文件?那就不太可能了,因为MS OFFICE是不开源的,商业机密。

我也提供不了什么好的想法了,网上有人通过注册表来查找WORD程序。
Word保存在注册表中的路径为:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe。

RegistryKey key = Registry.LocalMachine;
RegistryKey key2 = key.OpenSubKey("SOFTWARE");
RegistryKey key3 = key2.OpenSubKey("Microsoft");
RegistryKey key4 = key3.OpenSubKey("Windows");
RegistryKey key5 = key4.OpenSubKey("CurrentVersion");
RegistryKey key6 = key5.OpenSubKey("App Paths");
RegistryKey key7 = key6.OpenSubKey("Winword.exe");
textBox1.Text = key7.GetValue("Path").ToString() + "WINWORD.EXE";
Process P = new Process();
P.StartInfo.FileName = textBox1.Text;
P.StartInfo.Arguments = "tb1yangdemeng.doc";
P.Start();
//可以打开指定的tb1yangdemeng.doc。

要是注册表找不到呀,干脆让用户自己指定路径吧,告诉它默认的路径和样子,用户应该能找到。然后把这路径保存下来。

还有一种方法就是用.NET对OFFICE进行二次开发啦,这个比较难也。

回答3:

2楼说的对啊,LZ表述貌似详细,但无需求。。。让人很难捉摸。。。

如果你说要操作ACCESS EXCEL(读取,删除,数据)还可以理解。。。

回答4:

百度也不是万能的。不打开的话你要自己建立以个新文件然后在打开比较好