用process获取系统进程只能获取文件名,process获得的文件路径只是Excel.exe的路径,而不是文件路径。
解决方案 »
- tabControl控件怎么实现透明
- 急:怎么卸载vs2008
- 一个应该不难的问题
- visual studio 2005中vs_setup.smi打不开导致安装不了,应该怎么办?
- 又一个100分,还是摄像头捕获照相问题,散了几百分还没有解决.高手请进
- 我用DevExpress.XtraReports生成一个报表,里面含有图像,转成Excel文档后,为什么看不见图像呢?
- 正在找新项目投资合作代理加盟的朋友看过来
- 谁能帮我解释一下下面的语句
- C# 时间控件timer间隔太小而引发的问题
- 如何DateTimePicker把当日前的日期设为不可选择的状态??
- ASPNET 每次改了CS代码,都需要生成一遍才能调试是什么原因呢?
- 求助!!!关于C# timer的使用!在程序中就是出不来自己画的图
string StrPath = "";
OpenFileDialog ofdlg = new OpenFileDialog();
//ofdlg.Filter = "Excel(*.xls)|*.xls";
ofdlg.Filter = "Excel工作表(*.xls;*.et)|*.xls;*.et";
ofdlg.Multiselect = false;
if (ofdlg.ShowDialog() == DialogResult.OK)
{
StrPath = ofdlg.FileName;
if (StrPath.Substring(StrPath.Length - 3) == "xls")
{
MessageBox.Show("OFFICE文件");
} if (StrPath.Substring(StrPath.Length - 2) == "et")
{
MessageBox.Show("WPS文件");
}
}
谢谢你的回答,但是我不是通过程序打开excl的...
如果让你用Excel.exe路径打开指定的文档,你会怎么传参呢?
如果Excel仅打开那一个文档
可以通过win32 APIGetStartInfo查询到启动参数
或者使用WMI
using System;
using System.Management;class Program
{
static void Main()
{
SelectQuery selectQuery = new SelectQuery("select * from Win32_Process");
object cmdLine = string.Empty; using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(selectQuery))
{
foreach (ManagementObject process in searcher.Get())
{
cmdLine = process.Properties["CommandLine"].Value;
Console.WriteLine(cmdLine == null ? "-----" : cmdLine);
}
} Console.ReadKey();
}
}但是Excel进程可以同时打开多个文档,要准确取得你要的那个,有三种途径
1.Net通过COM交互(注意Excel组件版本)
2.直接引用Microsoft.Office.Interop.Excel.dll来实现(强类型)
3.MS提供的VBA或者宏 activewordbook.fullname